C-文件处理

时间:2020-02-23 14:31:54  来源:igfitidea点击:

在本教程中,我们将学习使用C编程语言创建文件。

到目前为止,我们一直在使用printf()scanf()函数在控制台中打印数据并分别从控制台获取用户输入。
而我们正在使用的数据都是临时的,一直持续到程序执行为止。

现在,我们将学习使用C编程语言中的I/O(输入/输出)库函数来处理文件。

FILE数据类型

要使用C编程语言处理文件,我们必须将它们声明为FILE类型,该类型在I/O函数的标准库中定义。

语法:

FILE *fptr;

fopen功能

我们使用fopen()函数来创建一个新文件并使用一个现有文件。

语法:

FILE *fptr;
fptr = fopen("filename", "mode");

其中fptr是文件指针。
" filename"是我们要创建或者使用的文件的名称。

"文件名"可以类似于"示例",或者具有扩展名,例如" sample.txt"或者完整路径" /path/to/file.ext"。

" mode"是我们打算使用该文件的方式。
并且它采用以下值。

  • r仅在存在文件的情况下打开文件以供读取。

  • w打开文件仅用于写入。

  • a打开文件以添加数据。

我们还可以在新的编译器中使用以下代码。

  • 如果文件存在,r +打开文件进行读写。

  • w +打开/创建用于读取和写入的文件。

  • a +打开文件以读取和附加数据。

请注意!

  • 以" r"读取模式打开文件:如果该文件存在,则将其打开以进行读取,否则会出现错误。

  • 以" w"写入模式打开文件:如果文件已经存在,则其内容将被覆盖。
    否则,将创建一个新文件。

  • 以" a"附加模式打开文件:如果文件存在,则将其打开以进行附加。
    否则,将创建一个新文件。

如果成功,fopen()函数将返回一个FILE指针。
否则,返回NULL。

fclose功能

使用后关闭文件连接很重要,为此,我们使用fclose()函数。

语法。

fclose(file_pointer);

其中," file_pointer"是为文件创建的文件指针。

用C编写一个程序,以用户输入的名称创建一个新文件

为此,我们将首先创建一个变量来保存文件的路径。
然后使用fopen()函数创建文件。
然后,我们将使用fclose()函数关闭连接。

#include <stdio.h>

int main(void) {
  //creating a FILE variable
  FILE *fptr;
  
  //creating a variable to store filename
  char filename[255];
  
  //get file path from the user
  printf("Enter the filename: ");
  scanf("%s", filename);
  
  //open the file in write mode
  fptr = fopen(filename, "w");
  
  if (fptr != NULL) {
    printf("File created successfully!\n");
  
    //close the file
    fclose(fptr);
  }
  else {
    printf("Failed to create the file.\n");
  }
  
  return 0;
}
Enter the filename: /Users//Desktop/sample/helloworld.txt
File created successfully!

对于此示例,我要输入文件的完整路径。
我们也可以只输入文件名,例如" helloworld.txt",它将在可执行C程序文件所在的目录中创建文件。

之前的文件夹内容:

-MBP:sample $pwd
/Users//Desktop/sample
-MBP:sample $ls -la
total 0
drwxr-xr-x   2   staff   64 Jan 01 16:34 .
drwx------+ 10   staff  320 Jan 01 16:34 ..

之后的文件夹内容:

-MBP:sample $ls -la
total 0
drwxr-xr-x   3   staff   96 Jan 01 16:37 .
drwx------+ 10   staff  320 Jan 01 16:34 ..
-rw-r--r--   1   staff    0 Jan 01 16:37 helloworld.txt