C 读取文件
读取文件
在上一章中,我们使用 w
和 a
模式在 fopen()
函数中写入文件。
要读取文件,可以使用 r
模式
示例
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
这将使 filename.txt
打开以供读取。
在 C 中读取文件需要一些工作。坚持住!我们将一步一步地指导您。
接下来,我们需要创建一个字符串,该字符串应该足够大以存储文件的内容。
例如,让我们创建一个可以存储多达 100 个字符的字符串
示例
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
// 存储文件的内容
char myString[100];
为了读取 filename.txt
的内容,我们可以使用 fgets()
函数。
fgets()
函数接受三个参数
示例
fgets(myString, 100, fptr);
- 第一个参数指定存储文件内容的位置,该内容将位于我们刚刚创建的
myString
数组中。 - 第二个参数指定要读取数据的最大大小,该大小应与
myString
的大小 (100
) 相匹配。 - 第三个参数需要一个用于读取文件的 文件指针 (
fptr
在我们的示例中)。
现在,我们可以打印字符串,这将输出文件的内容
示例
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
// 存储文件的内容
char myString[100];
// 读取内容并将其存储在 myString 中
fgets(myString, 100, fptr);
// 打印文件内容
printf("%s", myString);
// 关闭文件
fclose(fptr);
Hello World!
注意:fgets
函数仅读取文件的首行。如果您记得,filename.txt
中有两行文本。
要读取文件的每一行,可以使用 while
循环
示例
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
// 存储文件的内容
char myString[100];
// 读取内容并打印它
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// 关闭文件
fclose(fptr);
Hello World!
Hi everybody!
良好实践
如果您尝试打开一个不存在的文件以供读取,fopen()
函数将返回 NULL
。
提示:作为一个良好的实践,我们可以使用 if
语句来测试 NULL
,并在文件不存在时打印一些文本
示例
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("loremipsum.txt", "r");
// 如果文件不存在,则打印一些文本
if(fptr == NULL) {
printf("无法打开文件。");
}
// 关闭文件
fclose(fptr);
如果文件不存在,将打印以下文本
无法打开文件。
考虑到这一点,我们可以使用上面的“读取文件”示例再次创建一个更可持续的代码
示例
如果文件存在,则读取内容并打印它。如果文件不存在,则打印一条消息
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
// 存储文件的内容
char myString[100];
// 如果文件存在
if(fptr != NULL) {
// 读取内容并打印它
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// 如果文件不存在
} else {
printf("无法打开文件。");
}
// 关闭文件
fclose(fptr);
Hello World!
Hi everybody!