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