到目前为止,使用C程序的操作是在没有存储在任何地方的提示/终端上完成的。但是在软件行业中,大多数程序都是为存储从程序中获取的信息而编写的。一种这样的方法是将获取的信息存储在文件中。可以对文件执行的不同操作是:
- 创建一个新文件(属性为“ a”或“ a +”或“ w”或“ w ++”的fopen)
- 打开一个现有文件( fopen )
- 从文件读取( fscanf或fgets )
- 写入文件( fprintf或fputs )
- 移至文件中的特定位置( fseek,快退)
- 关闭文件( 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基础课程》。