C语言 文件读写fscanf 不能读取文件第一行

我在做USACO的训练题
按照要求写了个读文件的程序,但是出了一点我不能理解的bug
希望老师指点指点

程序:

 int main () {
        char comet[6];
        char group[6];
        FILE *input;

        input=fopen ("ride.in", "r");
        fscanf (input, "%s\n%s", comet, group );   \\fscanf (input, "%s%s", comet, group );   都试过结果是一样的

        //test input
    puts ("\ntest input");
        printf ("%s\n%s\n", comet, group );
        printf ("%c\n%c\n", comet[0], group[0] );

        return 0;
}

ride.in 文件内容:

COMETQ
HVNGAT

编译后的输出却是:


HVNGAT

H

4个回答

程序测试没有问题。请检查一下你的ride.in的编码是不是ANSI,如果是UTF-8,Unicode等,可能会有问题。

u013845780
chinanoahli 一言惊醒梦中人啊!还没想到是编码问题,因为为了方便,我把mac的文本编辑器的默认编码改成了UTF-8,难怪难怪
5 年多之前 回复

表示我的机子上跑没问题。。。表示作为一个菜鸟,不知道原因,不过对于
\fscanf (input, "%s%s", comet, group );
我把这里的“\”改成了"//"……
图片说明
这是我的运行结果。。。

LZ注释错了//fscanf (input, "%s%s", comet, group );

u013845780
chinanoahli 嘛,初学者的奇葩错误,以后我会多加注意的,谢谢
5 年多之前 回复

用fscanf一定要保证写入的格式和读出的格式完全一致才可以,用UE看下你的源文件里面的字符的十六进制数,看看有没有什么你看不到的字符

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问