関数fscanf関数を使用

関数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);

おすすめ

転載: www.cnblogs.com/yaya12138/p/11329319.html