C - IntroductionC - Hello World ProgramC - Exercise 1C - Basic structure of a C programC - TokensC - Data TypesC - Type ConversionC - Exercise 2C - Character Input Output OperationsC - Input Output operation using scanf and printf functions

Operators

C - Arithmetic OperatorsC - Relational OperatorsC - Logical OperatorsC - Assignment OperatorsC - Increment Decrement OperatorsC - Bitwise Operators

Precedence and Associativity

C - Precedence and AssociativityC - Exercise 3

Conditions

C - If Else decision making statementsC - Switch Case decision making statements

Loop

C - While LoopC - Do While LoopC - For LoopC - Exercise 4

Array

C - ArraysC - Two Dimensional ArraysC - Multi Dimensional ArraysC - Exercise 5

String

C - StringC - Exercise 6C - String Manipulation

Functions

C - FunctionsC - Functions CategoryC - Function Call - Flow of ControlC - RecursionC - Functions and ArraysC - Functions and Strings

Structures

C - StructuresC - Structures and ArraysC - Passing structure to functionC - Function returning structureC - Structure in Structure

Pointers

C - PointersC - Pointers and VariablesC - Pointers and Variables Memory RepresentationC - Pointers Chaining

Pointers and Arrays

C - Pointers and One Dimensional ArrayC - Pointers and Two Dimensional ArrayC - Array of Pointers

Pointers and Strings

C - Pointers and Strings

Pointers and Functions

C - Pointers and Functions - Call by Value and Call by ReferenceC - Function returning pointer

Pointers and Structures

C - Pointers and StructuresC - Pointers and Array of StructuresC - Passing structure pointer to function

Handling Files

C - File Handling - Getting StartedC - File Handling - Read and Write CharactersC - File Handling - Read and Write IntegersC - File Handling - Read and Write multiple dataC - File Handling - Randomly Access Files

Command Line Arguments

C - Command Line Arguments

Dynamic Memory Allocation

C - Dynamic Memory Allocation - Getting StartedC - Dynamic Memory Allocation - malloc functionC - Dynamic Memory Allocation - calloc functionC - Dynamic Memory Allocation - realloc function

C - File Handling - Read and Write multiple data

C Programming

In this tutorial we will learn to read and write multiple data in files in C programming language.

In the previous tutorials we have learned how to read and write characters in files in C and how to read and write integers in files in C. In both the cases we worked with single character and integer at a time. Now we will learn to handle multiple data using fscanf() and fprintf() functions.

The fscanf and fprintf functions

We know how to use scanf() function to take input and printf() function to print the output.

In a similar way, we use the fscanf() function to read data from the file and fprintf() function to write data in the file.

Syntax of fscanf function:

fscanf(fptr, "control string", list_of_var);

Where, fptr is a file pointer. The control string contains the input specification like %d for integer or %c for character. list_of_var is the list of variables.

Syntax of fprintf function:

fprintf(fptr, "control string", list_of_var);

Write a program in C to read and write student name, id and score in a file

We will create a student file for this program.

We will use the fprintf() function to write the data in the file and then using the fscanf() function to read the data from the file.

#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;
}

Output:

File created successfully!
Enter student name: Yusuf Shakeel
Enter student ID: 100
Enter student score: 9

Student Details:
ID: 100
Name: Yusuf Shakeel
Score: 9

End of file.

Content of the student file.

Using fscanf and fprintf with stdin and stdout

We can also use the fscanf and fprintf function to read data from the standard input stdin like keyboard and write data to the standard output stdout like monitor.

In the following example we are taking id and score from user and printing it.

#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;
}

Output:

Enter ID: 1
Enter Score: 20

Detail:
ID: 1
Score: 20