Я разбираю текстовый файл - я могу его открыть, прочитать и удалить ненужные фрагменты из строки.
Однако, я не в состоянии получить этот код, чтобы работать:Аргумент Out не работает
size_t read_lines(const char *file_name, char **buffer) {
size_t n_lines = 0;
FILE *file = open_file(file_name);
while (1) {
char *ln = _read_line(file);
if (ln == NULL) {
break;
}
n_lines++;
}
fclose(file);
file = open_file(file_name);
buffer = calloc(n_lines, sizeof(char *));
for (int i = 0; i < n_lines; i++) {
buffer[i] = read_line(file);
}
fclose(file);
return n_lines;
}
int main(int argc, const char *argv[]) {
char **lines;
size_t length = read_lines("/Users/honzik/Documents/Xcode/BoioVM/BoioVM/test_file.bic", lines);
for (int i = 0; i < length; i++) {
printf("%s\n", lines[i]);
}
free(lines);
return 0;
}
Я знаю, что это, вероятно, дерьмовый код, но он просто должен работать.
Или, может быть, нет? lines
равны NULL
, но как получить указатель, обновленный функцией?
PS: Не беспокойтесь обо всех этих функций (open_file
, read_line
, _read_line
, ...) они работают :)
Можем ли мы увидеть '_read_line()'? – babon
Вы написали три функции с именем: 'read_lines',' _read_line' и 'read_line'. Зачем? – babon
Да, это довольно опасно, так как это может привести к путанице. Это сбивает с толку. Лучше, если вы дадите им больше * явных * имен. Как 'read_line_with_something()' или что-то в этом роде. –