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