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

