Я довольно хорошо знаком с 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 вне функции и затем передать его.
Каким будет правильный способ справиться с таким сценарием?