関数fscanf関数の使用法
簡単な紹介
fcanf()関数の形式を読み書きする機能です。これは、ディスク・ファイルを読み込むの目的であります
プロトタイプ:
int fscanf(FILE * fp,char * format,...);
ここで、ファイルポインタfp、フォーマット文字列には、パラメータリストのために...、Cで、文字の数が正常に書かれて返されます。
関数fscanf関数は、データ・ストリームの形式に格納されているからファイル入力読み込みスペースとラインフィードの終わりを経験します。
使用例
#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,地址为未知
注意点
関数fscanf関数は、ファイル入力ストリーム内のデータを読み込む1は、あなたがスペースの影響を無視したい場合は、あなたが使用することができ、読み取りを終了しますスペースや改行が発生しました
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);