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