Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

c

What is fwscanf() in C?

Muhammad Ashir

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

fwscanf() reads data from stream and stores it in accordance with the format specified in the format string.

Prototype

int fwscanf (FILE* stream, const wchar_t* format, ...);

Parameters

  • FILE* stream: The pointer to the stream from which the data is read.
  • const wchar_t* format : This specifies how the data will be read from the stream.
  • ...(additional arguments): If the format string contains format specifiers, additional arguments corresponding to the specifiers can be given here.

Return Type

  • fwscanf() returns the number of characters read upon success. If the function fails, then the count returned can be less than the number of characters written or even zero. fwscanf() raises the feof flag if end of file is encountered while reading, or ferror if an error occurs.

Example

#include <stdio.h>
#include <wchar.h>
int main() {
wchar_t buffer[80];
//create an output file and write the contents to it
const wchar_t output[80] = L"This was read from file";
FILE* inputFile;
inputFile = fopen("Temp.txt", "w+");
fwprintf(inputFile, L"%S\n",output);
fclose(inputFile);
//read from file
inputFile = fopen("Temp.txt","r+");
while(fwscanf(inputFile, L"%ls", buffer) > 0){
fwprintf(stdout, L"%S ",buffer);
}
fwprintf(stdout, L"\n");
fclose(inputFile);
return 0;
}

Explanation

In the code above, we first create a file called Temp.txt and write the contents of the output array to it as shown below:

fwprintf(inputFile, L"%ls\n",output);

Here, the format specifier “%S” represents wide string.

When reading from the file, we use a while loop to test if the fwscanf() has encountered the EOF character or not. If it encounters the EOF character, it returns a negative value or zero, which can be used to test the condition as follows:

while(fwscanf(inputFile, L"%ls", buffer) > 0)

Once the contents have been read from the file into the buffer array, we can print them using the fwprintf() function.

RELATED TAGS

c

CONTRIBUTOR

Muhammad Ashir
Copyright ©2022 Educative, Inc. All rights reserved

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Keep Exploring