C-文件处理-读写多个数据
时间:2020-02-23 14:31:55 来源:igfitidea点击:
在本教程中,我们将学习使用C编程语言在文件中读取和写入多个数据。
在之前的教程中,我们学习了如何在C语言文件中读写字符,以及如何在C语言文件中读写整数。
在这两种情况下,我们一次都使用单个字符和整数。
现在我们将学习使用fscanf()
和fprintf()
函数处理多个数据。
fscanf和fprintf函数
我们知道如何使用scanf()
函数来获取输入,以及如何使用printf()
函数来输出输出。
以类似的方式,我们使用fscanf()
函数从文件中读取数据,并使用fprintf()
函数将数据写入文件中。
fscanf函数的语法:
fscanf(fptr, "control string", list_of_var);
其中," fptr"是文件指针。
"控制字符串"包含输入说明,例如整数"%d"或者字符"%c"。
list_of_var是变量列表。
fprintf函数的语法:
fprintf(fptr, "control string", list_of_var);
用C语言编写程序以在文件中读写学生的姓名,身份证和分数
我们将为此程序创建一个"学生"文件。
我们将使用fprintf()
函数将数据写入文件,然后使用fscanf()
函数从文件中读取数据。
#include <stdio.h> int main(void) { //creating a FILE variable FILE *fptr; //integer variable int id, score; int i, s; //character variable char name[255]; char n[255]; //open the file in write mode fptr = fopen("student", "w"); if (fptr != NULL) { printf("File created successfully!\n"); } else { printf("Failed to create the file.\n"); //exit status for OS that an error occured return -1; } //get student detail printf("Enter student name: "); gets(name); printf("Enter student ID: "); scanf("%d", &id); printf("Enter student score: "); scanf("%d", &score); //write data in file fprintf(fptr, "%d %d %s", id, score, name); //close connection fclose(fptr); //open file for reading fptr = fopen("student", "r"); //display detail printf("\nStudent Details:\n"); fscanf(fptr, "%d %d %[^\n]s", &i, &s, n); printf("ID: %d\n", i); printf("Name: %s\n", n); printf("Score: %d\n", s); printf("\nEnd of file.\n"); //close connection fclose(fptr); return 0; }
File created successfully! Enter student name: Enter student ID: 100 Enter student score: 9 Student Details: ID: 100 Name: Score: 9 End of file.
学生文件的内容。
将fscanf和fprintf与stdin和stdout一起使用
我们还可以使用fscanf和fprintf函数从标准输入stdin读取数据,例如键盘,并将数据写入标准输出stdout监视程序。
在下面的示例中,我们从用户那里获取ID和得分并进行打印。
#include <stdio.h> int main(void) { //variables int id, score; //take user input printf("Enter ID: "); fscanf(stdin, "%d", &id); printf("Enter Score: "); fscanf(stdin, "%d", &score); //print output printf("\nDetail:\n"); fprintf(stdout, "ID: %d\n", id); fprintf(stdout, "Score: %d\n", score); return 0; }
Enter ID: 1 Enter Score: 20 Detail: ID: 1 Score: 20