我正在使用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等其他工具。