私は Java には精通していますが、C にはあまり詳しくありません。
Java では、何かを実行して文字列を返すメソッドがある場合、次のようになります。
private String doSomething(...) {
String s;
// do something;
return s;
}
C の同等の構文は機能せず、明らかに間違っています。
char* doSomething(...) {
char s[100];
// do something;
return s;
}
もちろん、私はできる:
char* doSomething(...) {
char *s;
s = malloc(100 * sizeof(char));
// do something;
return s;
}
これはうまくいくでしょう(私は思います!)が、私はめったにこの方法でコードを見ません(不必要にヒープを埋めているからですか?)
最も一般的に、私は見ます:
bool doSomething(char *s) {
// do something that copies chars to s
return true;
}
呼び出しステートメントは次のようになります。
char s[100];
doSomething(s);
関数自体の内部まで char 配列のサイズがわからない場合はどうすればよいですか? つまり、関数の外側で char 配列を宣言してから渡すことはできません。
そのようなシナリオに対処する正しい方法は何でしょうか?