[解決済み] 関数からchar[]/stringを返す [重複]。
2022-03-13 12:33:53
質問
私はC言語でのコーディングにかなり慣れておらず、現在、C文字列/文字配列を返し、変数に代入する関数を作成しようとしています。
これまでのところ、char * を返すのが最も一般的な解決策であることが確認されています。そこで、私は試してみました。
char* createStr() {
char char1= 'm';
char char2= 'y';
char str[3];
str[0] = char1;
str[1] = char2;
str[2] = '\0';
char* cp = str;
return cp;
}
質問は、この返されたものをどう使うかです。
char*
で、それが指し示すchar配列をchar[]変数に代入するのですか?
Iveは試してみました(すべてnoob-drowningエラーにつながった)。
-
char* charP = createStr();
-
char myStr[3] = &createStr();
-
char* charP = *createStr();
解決方法は?
変数を動的に割り当てていないことに注意してください。
str
この関数の中では、関数が終了するまでに失われます。
あるはずです。
char * createStr() {
char char1= 'm';
char char2= 'y';
char *str = malloc(3);
str[0] = char1;
str[1] = char2;
str[2] = '\0';
return str;
}
そして、関数を呼び出すときに、データを受け取る変数の型が、関数の戻り値の型と一致する必要があります。だから、こうあるべきなのです。
char *returned_str = createStr();
メモリリークを防ぐため、返された値は必ず解放する必要があることは特筆しておく。
char *returned_str = createStr();
//doSomething
...
free(returned_str);
関連
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み] エラー: `itoa` はこのスコープで宣言されていません。
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない