使用fscanf

时间:2015-11-27 06:13:33

标签: c input scanf

我使用fscanf来输入特定格式。我尝试阅读的一行是:

  

A B C D E F G H I J K x

我的fscanf代码如下:

fscanf(circuit, "%s %s %s %s %s %s %s %s %s %s %s %c ",
       str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11, &a);

在这个例子"电路"是文件的名称。出于某种原因,"K"'x'被正确读取(分别为str11a),但其余字符无法正确读取。我选择字符串标识符与字符标识符的原因是因为该行可能包含单个数字整数。在整数的情况下,我只是将字符串转换为稍后代码块中的整数。为什么这不正常?

1 个答案:

答案 0 :(得分:0)

我的代码在我的机器上运行。

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

//#define _CRT_SECURE_NO_WARNINGS

int main()
{
    char str1[2], str2[2], str3[2], str4[2], str5[2], str6[2], str7[2], str8[2], str9[2], str10[2], str11[2];
    char a;
    FILE * fp;
    fp = fopen("test.txt", "w+");
    fputs("A B C D E F G H I J K x", fp);

    rewind(fp);
    fscanf(fp, "%s %s %s %s %s %s %s %s %s %s %s %c ", str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11, &a);

    printf("Read String1 |%s|\n", str1);
    printf("Read String2 |%s|\n", str2);
    printf("Read String3 |%s|\n", str3);
    printf("Read Character |%c|\n", a);

    fclose(fp);

    return(0);
}

输出:

Read String1 |A|
Read String2 |B|
Read String3 |C|
Read Character |x|