#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 считать содержимое файла в массив
Комментариев нет:
Отправить комментарий