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