• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Stringからconst char配列への代入)

Stringからconst char配列への代入方法

このQ&Aのポイント
  • 指定された方法でStringからconst char配列への代入を行う際、正常に文字列が代入されない場合があります。
  • 該当のプログラム関数内で、keygenCompleteで貯めたはずの文字列が表示されず、代入がうまくいかない現象が発生しています。
  • 適切な代入方法をご教示いただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> Client_private = keygen.c_str(); keygenCompleteじゃなくてkeygenを使っているからでは?

techhouse
質問者

お礼

回答頂きありがとうございます。 いろいろとプログラムのチェックをやっていなくてミスが多いことに気づきました。 とりあえず1つ1つprintfで、格納された文字列などを確認しながら、修正して行ったところ、次のようなプログラムで、やりたかった処理ができるようになりました。 助かります。 const char* Client_private; bool awsPrivateKey(fs::FS &fs, String path) { //File file = SD_MMC.open(path, "r"); File file = fs.open(path, "r"); if (!file) { Serial.printf("Can't Open File %s", path); return false; } String keygenComplete; String keygen; while (file.available()) { keygen = file.readStringUntil('\n'); keygenComplete += keygen + "\n"; } Client_private = keygenComplete.c_str(); Serial.printf("data check: %s\n", Client_private); //Serial.printf("data check: %s\n", keygenComplete.c_str()); return true; }

その他の回答 (1)

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.2

>const char* Client_private; この配列に代入するにはどのようにすれば良いでしょうか? const char*は配列ではなくポインタです。 >Client_private = keygen.c_str(); これを実行したとき、keygenは内容は >keygen = line.substring(0, line.indexOf('\n')); >keygen.trim(); を最後に実行したときの内容に置き換わっているので取り込んだ最後の行の内容ですよ。

techhouse
質問者

お礼

回答頂きありがとうございます。 いろいろとプログラムのチェックをやっていなくてミスが多いことに気づきました。 とりあえず1つ1つprintfで、格納された文字列などを確認しながら、修正して行ったところ、次のようなプログラムで、やりたかった処理ができるようになりました。 助かります。 const char* Client_private; bool awsPrivateKey(fs::FS &fs, String path) { //File file = SD_MMC.open(path, "r"); File file = fs.open(path, "r"); if (!file) { Serial.printf("Can't Open File %s", path); return false; } String keygenComplete; String keygen; while (file.available()) { keygen = file.readStringUntil('\n'); keygenComplete += keygen + "\n"; } Client_private = keygenComplete.c_str(); Serial.printf("data check: %s\n", Client_private); //Serial.printf("data check: %s\n", keygenComplete.c_str()); return true; }

関連するQ&A