C 读取文本文件的内容并将其显示为字符串时出现问题

C 读取文本文件的内容并将其显示为字符串时出现问题,c,C,我有一个名为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",

我有一个名为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);
}

这只是第一行…我无法理解原因

fgets
读取一行,即:直到文本或文件末尾的下一个
\n
(换行符)


要读取整个文件,您需要重复该顺序,直到
feof
返回true。

有一些文档,您可以使用这些文档,并在您最喜欢的搜索引擎上轻松查找,这些文档将告诉您答案。例如:

函数的作用是将数据流中的字节读入数组 由s指向,直到读取n-1个字节,或读取并 已传输到,或遇到文件结束条件。这个 然后字符串以空字节终止

如果需要一次读取整个文件,请使用而不是
fgets()
。与
fgets()
不同,
fread()
不会在换行符出现时停止读取


如果要逐行处理文件,请反复调用
fgets()
,直到返回非零值(表示EOF)或非零值(表示错误条件)。

syntex:

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

从流中读取字符并将其作为C字符串存储到str中,直到读取(num-1)个字符或到达换行符或文件末尾,以先到者为准。 换行符使FGET停止读取,但它被视为有效字符,因此它包含在复制到str的字符串中。 在读取字符后,空字符会自动追加到str中,以表示C字符串的结束

所以这里fgets只能读到第1行
因此,我建议您使用fread()

最好检查
fgets()返回的值
;如果没有更多内容可读取,则返回值
EOF
。这适用于所有标准输入函数:检查您正在使用的函数的文档,查看它返回的内容以指示输入的结束。在
fgets()
告诉您完成后,您可以使用
feof()
ferror()
告诉您原因。更准确地说,
fgets()
读取一行(并将其存储在字符串中)。(或者,如果没有足够的空间来阅读全部内容,它会阅读部分内容。)
MySQL_IP:172.19.1.173