Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

Считать строку неизвестной длины из файла

#c #файлы


Есть файл, в нём записана строка неизвестной длинны, как мне её записать в массив
char? Я что-то пытался, но ничего не вышло.

Вот убрал лишнее из кода, насчет двойного указателя не уверен.

char **str; //вот сюда надо записать из файла
char ch;
FILE *fp;

if ((fp = fopen("test.txt","r"))==NULL) {
  printf("File not found.\n");
}

do {
  ch = getc(fp);//read 

  //тут видимо должен быть чудо-код

} while(ch!=EOF);

fclose(fp);

    


Ответы

Ответ 1



Примерно так #include #include int main() { FILE* f = fopen("file.txt", "r"); unsigned int N = 10, delta=10, i = 0; char* buf = (char*) malloc (sizeof(char)*N); while ((buf [i] = fgetc(f)) != EOF ) { if (++i >= N) { N += delta; buf = (char*) realloc (buf, sizeof(char)*N); } } fclose(f); buf[i] = '\0'; puts (buf); free (buf); return 0; }

Ответ 2



Если в файле только 1 строка, то: Открыть файл Переместиться на конец файла через fseek(FILE*, 0, SEEK_END) Через ftell получить позицию, это будет длинна строки 1 раз сделать malloc на размер того, что вернул ftell Переместиться на начало файла В цикле пока не EOF считать содержимое файла в массив

Комментариев нет:

Отправить комментарий