Проблема с чтением содержимого текстового файла и отображением его в виде строки - PullRequest
1 голос
/ 01 августа 2011

У меня есть текстовый файл с именем MySQL.txt, имеющий следующее содержимое:

MySQL_IP:172.19.1.173
MySQL_USER:kok
MySQL_PASS:kok
MySQL_DATABASE:kok

Я пытаюсь прочитать содержимое файла, используя следующий код

#include<stdio.h>
main()
{
FILE *fp;
char str[50000];
fp = fopen("MySQL.txt","r");
fgets(str,sizeof(str),fp);
printf("%s\n",str);
}

НетНезависимо от того, насколько я увеличил размер буфера строки, мне предоставляется вывод:

MySQL_IP:172.19.1.173

, который является только первой строкой ... Я не могу понять причину !!!

Ответы [ 3 ]

3 голосов
/ 01 августа 2011

Существует документация, которую вы можете использовать и легко найти в своей любимой поисковой системе, которая подскажет вам ответ. Например, , как описано на этой странице для fgets():

Функция fgets () считывает байты из потока в массив указывается s , пока не будет прочитано n-1 байт или не будет прочитано и переведено в s , или возникла ошибка конца файла. Затем строка завершается нулевым байтом.

Если вам нужно прочитать весь файл одновременно, используйте fread() вместо fgets(). В отличие от fgets(), fread() не остановит чтение при появлении новой строки.

Если вы хотите обрабатывать файл построчно, то вызывайте fgets() несколько раз, пока feof() не вернет ненулевое значение (с указанием EOF) или ferror() возвращает ненулевое значение (указывает на состояние ошибки).

0 голосов
/ 01 августа 2011

Документация fgets гласит:

синтаксис:

char * fgets (char * str, int num, FILE * stream);

Считывает символы из потока и сохраняет их в виде строки C в строке str до тех пор, пока не будет прочитано (num-1) символов или не будет достигнута новая строка или конец файла, в зависимости от того, что произойдет раньше. Символ новой строки заставляет fgets перестать читать, но он считается допустимым символом и поэтому включен в строку, скопированную в str. Нулевой символ автоматически добавляется в строку после символов, прочитанных для обозначения конца строки C.

так что здесь fgets только чтение до 1 строки поэтому я предлагаю вам использовать fread ()

0 голосов
/ 01 августа 2011

fgets читает строку, то есть: до следующего \n (новая строка) в тексте или конце файла.

Чтобы прочитать весь файл, необходимо повторить последовательность до feof возвращает истину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...