C 读取文件


读取文件

在上一章中,我们使用以下命令写入文件wa里面的模式fopen()功能。

从文件中,您可以使用r模式:

示例

FILE *fptr;

// Open a file in read mode
fptr = fopen("filename.txt", "r");

这将使filename.txt打开阅读。

读取 C 中的文件需要一些工作。请坚持住!我们将逐步指导您。

接下来,我们需要创建一个足够大的字符串来存储文件的内容。

例如,让我们创建一个最多可以存储 100 个字符的字符串:

示例

FILE *fptr;

// Open a file in read mode
fptr = fopen("filename.txt", "r");

// Store the content of the file
char myString[100];

为了阅读内容filename.txt,我们可以使用fgets()功能。

这个fgets()函数采用三个参数:

示例

fgets(myString, 100, fptr);
  1. 第一个参数指定文件内容的存储位置,该内容将位于myString我们刚刚创建的数组。
  2. 第二个参数指定要读取的数据的最大大小,该大小应与myString100)。
  3. 第三个参数需要一个文件指针,用于读取文件(fptr在我们的例子中)。

现在,我们可以打印字符串,这将输出文件的内容:

示例

FILE *fptr;

// Open a file in read mode
fptr = fopen("filename.txt", "r");

// Store the content of the file
char myString[100];

// Read the content and store it inside myString
fgets(myString, 100, fptr);

// Print the file content
printf("%s", myString);

// Close the file
fclose(fptr);

Hello World!

运行示例 »

笔记:这个fgets函数只读取文件的第一行。如果你还记得的话,里面有两行文字filename.txt

要读取文件的每一行,您可以使用while环形:

示例

FILE *fptr;

// Open a file in read mode
fptr = fopen("filename.txt", "r");

// Store the content of the file
char myString[100];

// Read the content and print it
while(fgets(myString, 100, fptr)) {
  printf("%s", myString);
}

// Close the file
fclose(fptr);

Hello World!
Hi everybody!

运行示例 »

良好实践

如果您尝试打开一个不存在的文件进行读取,fopen()函数将返回NULL

提示:作为一个好的做法,我们可以使用if要测试的语句NULL,并打印一些文本(当文件不存在时):

示例

FILE *fptr;

// Open a file in read mode
fptr = fopen("loremipsum.txt", "r");

// Print some text if the file does not exist
if(fptr == NULL) {
  printf("Not able to open the file.");
}

// Close the file
fclose(fptr);

如果该文件不存在,则打印以下文本:

Not able to open the file.

运行示例 »

考虑到这一点,如果我们再次使用上面的 "read a file" 示例,我们就可以创建更可持续的代码:

示例

如果文件存在,则读取内容并打印。如果文件不存在,则打印一条消息:

FILE *fptr;

// Open a file in read mode
fptr = fopen("filename.txt", "r");

// Store the content of the file
char myString[100];

// If the file exist
if(fptr != NULL) {

  // Read the content and print it
  while(fgets(myString, 100, fptr)) {
    printf("%s", myString);
  }

// If the file does not exist
} else {
  printf("Not able to open the file.");
}

// Close the file
fclose(fptr);

Hello World!
Hi everybody!

运行示例 »