我正在使用Macbook。
我使用文本编辑创建了一个文件,并在其上写下了数字3和4,中间有一个空格。我保存了名为“mydata”的文件,然后生成了“mydata.rtf”。然后,我将此文件名更改为“mydata.txt”。
然后,我创建了该程序以打开此文件,然后在文件“mydata.txt”中打印值。
但是,它正在打印以下值:a = 446595126,b = 32767。

有人可以解释一下为什么该程序不能打印3和4。
谢谢。

#include<stdio.h>

int main(void)
{
        int a, b;

        FILE *fptr1;
        fptr1 = fopen ( "mydata.txt", "r" );
        if (fptr1 == NULL )
        {
                printf("FILE mydata.txt did not open\n");
        }
        else
        {
                fscanf(fptr1,"%d%d",&a,&b);
                printf("a = %d, b = %d\n",a,b);
        }

        fclose(fptr1);
        return 0;
}

最佳答案

您的文件名为RTF (Rich Text Format),无论其扩展名是什么:您只是将其重命名,而没有转换为其他格式。

之所以看到这些值,是因为文件的第一个字符与您在编辑器中输入的数字不匹配,而是与RTF格式的第一个字节相对应。

解决方案是,再次使用TextEdit打开文件,然后以纯文本格式保存。您也可以看看this post

通常,避免使用支持丰富格式(TextEdit,Word,Pages)的编辑器来创建纯文本文件。而是使用BBEdit,TextWrangler(尽管我认为已停产),emacs,Atom,vim,nano等其他工具。

10-07 19:29
查看更多