SDカード 複数の文字読み出し
テキストファイルで複数の文字読み出す方法です。 テキストファイルはファイルの長さが不定なので、
char buf[64]
のように静的確保がうまくできない場合が多いです。 静的確保ではなく動的確保ならスッキリしします。
サンプルプログラムです。
/*
*******************************************************************************
* M5Stack prototype
* date:2022/7/04
* Author Sadajejeje
*******************************************************************************
*/
#include <M5Core2.h>

void setup(){
    size_t size = 0;

    // M5Stackの初期化
    M5.begin();

    // 文字サイズを変更
    M5.Lcd.setTextSize(2);
    
    // ファイルオープン
    File file = SD.open("/text/hello.txt");
    
    if (file) {
    // ファイルサイズ取得
    size = file.size();
    unsigned char *pBuf = new unsigned char[size + 1];
    if(pBuf)
    {
        file.read(pBuf, size);
        *(pBuf + size) = 0;
        M5.Lcd.print((const char*)pBuf);
        delete[] pBuf;
    }
    file.close();
    } 
    else{
    M5.Lcd.println("File open error hello.txt");
    }
}

void loop(){
}

メモリーの動的確保は、
unsigned char *pBuf = new unsigned char[size + 1];
ファイルサイズより1つ大きく確保します。これは最後にnull文字をセットするためです。 *(pBuf + size) = 0;
これで文字を正しく表示できます。
動的確保で重要なことは、使ったメモリーはdeleteで解放します。案外忘れがちです。 これをやらないとメモリーリークが起き、動作が不安定になることもあります。