📜  C中文件处理的基础

📅  最后修改于: 2021-05-26 01:47:58             🧑  作者: Mango

到目前为止,使用C程序的操作是在没有存储在任何地方的提示/终端上完成的。但是在软件行业中,大多数程序都是为存储从程序中获取的信息而编写的。一种这样的方法是将获取的信息存储在文件中。可以对文件执行的不同操作是:

  1. 创建一个新文件(属性为“ a”或“ a +”或“ w”或“ w ++”的fopen)
  2. 打开一个现有文件( fopen )
  3. 从文件读取( fscanf或fgets )
  4. 写入文件( fprintf或fputs )
  5. 移至文件中的特定位置( fseek,快退)
  6. 关闭文件( fclose )

括号中的文字表示用于执行这些操作的功能。

文件操作中的功能:

打开或创建文件
对于打开文件,fopen函数与所需的访问模式一起使用。下面提到一些常用的文件访问模式。

C中的文件打开模式:

  • “ r” –搜索文件。如果文件成功打开,则fopen()将其加载到内存中并设置一个指向其中第一个字符的指针。如果无法打开文件,则fopen()返回NULL。
  • “ w” –搜索文件。如果文件存在,其内容将被覆盖。如果该文件不存在,则会创建一个新文件。如果无法打开文件,则返回NULL。
  • “ a” –搜索文件。如果文件成功打开,则fopen()将其加载到内存中并设置一个指向文件中最后一个字符的指针。如果该文件不存在,则会创建一个新文件。如果无法打开文件,则返回NULL。
  • “ r +” –搜索文件。如果成功打开,则fopen()将其加载到内存中并设置一个指向其中第一个字符的指针。如果无法打开文件,则返回NULL。
  • “ w +” –搜索文件。如果文件存在,其内容将被覆盖。如果该文件不存在,则会创建一个新文件。如果无法打开文件,则返回NULL。
  • “ a +” –搜索文件。如果文件成功打开,则fopen()将其加载到内存中并设置一个指向文件中最后一个字符的指针。如果该文件不存在,则会创建一个新文件。如果无法打开文件,则返回NULL。

如上所述,如果要对二进制文件执行操作,则必须在最后附加“ b”。例如,您必须使用“ wb”而不是“ w”,而不是“ a +”。为了对文件执行操作,使用了一个称为文件指针的特殊指针,该指针声明为

FILE *filePointer; 
So, the file can be opened as 
filePointer = fopen(“fileName.txt”, “w”)

可以更改第二个参数以包含上表中列出的所有属性。

  • 从文件读取–
    可以使用函数fscanf或fgets执行文件读取操作。这两个函数都执行与scanf相同的操作,并获得,但带有一个附加参数,即文件指针。所以,如果你想读通过字符行或字符的文件的行这取决于你。

    读取文件的代码片段为:

    FILE * filePointer; 
    filePointer = fopen(“fileName.txt”, “r”);
    fscanf(filePointer, "%s %s %s %d", str1, str2, str3, &year);
    
  • 写入文件–

    文件写入操作可以由功能fprintf和fputs执行,这些功能与读取操作相似。写入文件的片段为:

    FILE *filePointer ; 
    filePointer = fopen(“fileName.txt”, “w”);
    fprintf(filePointer, "%s %s %s %d", "We", "are", "in", 2012);
    
  • 关闭文件–
    每次成功执行fie操作后,都必须始终关闭文件。要关闭文件,必须使用fclose函数。关闭文件的片段为:
    FILE *filePointer ; 
    filePointer= fopen(“fileName.txt”, “w”);
    ---------- Some file Operations -------
    fclose(filePointer)

    示例1:打开文件,写入文件和关闭文件的程序

    // C program to Open a File,
    // Write in it, And Close the File
      
    # include 
    # include 
       
    int main( )
    {
      
        // Declare the file pointer
        FILE *filePointer ;
          
        // Get the data to be written in file
        char dataToBeWritten[50] 
            = "GeeksforGeeks-A Computer Science Portal for Geeks";
      
        // Open the existing file GfgTest.c using fopen()
        // in write mode using "w" attribute
        filePointer = fopen("GfgTest.c", "w") ;
          
        // Check if this filePointer is null
        // which maybe if the file does not exist
        if ( filePointer == NULL )
        {
            printf( "GfgTest.c file failed to open." ) ;
        }
        else
        {
              
            printf("The file is now opened.\n") ;
              
            // Write the dataToBeWritten into the file
            if ( strlen (  dataToBeWritten  ) > 0 )
            {
                  
                // writing in the file using fputs()
                fputs(dataToBeWritten, filePointer) ;   
                fputs("\n", filePointer) ;
            }
              
            // Closing the file using fclose()
            fclose(filePointer) ;
              
            printf("Data successfully written in file GfgTest.c\n");
            printf("The file is now closed.") ;
        }
        return 0;        
    }
    

    示例2:打开文件,读取文件并关闭文件的程序

    // C program to Open a File,
    // Read from it, And Close the File
      
    # include 
    # include 
       
    int main( )
    {
      
        // Declare the file pointer
        FILE *filePointer ;
          
        // Declare the variable for the data to be read from file
        char dataToBeRead[50];
      
        // Open the existing file GfgTest.c using fopen()
        // in read mode using "r" attribute
        filePointer = fopen("GfgTest.c", "r") ;
          
        // Check if this filePointer is null
        // which maybe if the file does not exist
        if ( filePointer == NULL )
        {
            printf( "GfgTest.c file failed to open." ) ;
        }
        else
        {
              
            printf("The file is now opened.\n") ;
              
            // Read the dataToBeRead from the file
            // using fgets() method
            while( fgets ( dataToBeRead, 50, filePointer ) != NULL )
            {
              
                // Print the dataToBeRead 
                printf( "%s" , dataToBeRead ) ;
             }
              
            // Closing the file using fclose()
            fclose(filePointer) ;
              
            printf("Data successfully read from file GfgTest.c\n");
            printf("The file is now closed.") ;
        }
        return 0;        
    }
    
    想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。