fscanf函數的用法


fscanf函數用法

簡要介紹

fscanf()函數是格式化讀寫函數。它讀取的對象是磁盤文件

函數原型:

int fscanf(FILE * fp,char * format,...);

其中fp為文件指針,format為C字符串,...為參數列表,返回值為成功寫入的字符的個數。

fscanf函數會從文件輸入流中讀入數據,存儲到format中,遇到空格和換行時結束

使用示例

#include <stdio.h>
#include <stdlib.h>

typedef struct {
	int id;					//學生id
	char name[30];			//學生姓名
	char address[100];		//學生地址
}Student;

int main()
{
	Student student;
	FILE* fp = fopen("D:\\markdown.txt", "wt+");
	if (fp == NULL)
	{
		puts("文件不存在,請在指定目錄下先行創建文件!");
		exit(0);
	}

	printf("請依次輸入學生的id,姓名和地址:\n");
	scanf("%d%s%s", &student.id, student.name, student.address);

	//將學生信息存入D:\\markdown.txt文件中
	fprintf(fp, "%d\t%s\t%s\n", student.id, student.name, student.address);

	Student temp;
	//重置文件指針
	rewind(fp);
	//將文件中的信息讀取出來並且存儲到temp中
	fscanf(fp, "%d\t%s\t%s\n", &temp.id, temp.name, temp.address);

	printf("第%d位學生的姓名為:%s,地址為%s\n", temp.id, temp.name, temp.address);
	
	fclose(fp);

	return 0;
}

運行結果:

請依次輸入學生的id,姓名和地址:
1
yaya
未知
第1位學生的姓名為:yaya,地址為未知

注意點

1、fscanf函數在文件輸入流中讀取數據時,遇到空格或者換行會結束讀取,如果要忽略換行符的影響,可以使用

fscanf(fp, "%[^\n]", test);

在上面的這條語句中,%[]表示讀取指定字符集,即%[0-2]為讀取0~2之間的數字(包括0和2),^ 表示反向讀取,即讀取指定字符集以外的字符,遇到指定字符就停止(不會讀取指定字符)。所以%[^\n]表示讀取字符直到遇到\n為止。

如果要將換行符讀取掉,但不存儲到變量中,可以采用

fscanf(fp, "%[^\n]%*c", test);

2、scanf和fscanf的相互轉換

char name[10] = "";
scanf("%[0-2]", name);				//等價於下一句
fscanf(stdin, "%[0-2]", name);		//等價於上一句
printf("%s", name);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM