C 为什么txt文件的结果不符合预期?

C 为什么txt文件的结果不符合预期?,c,file,printf,C,File,Printf,下面的程序没有像我预期的那样工作。它应该读取具有特定格式的文件,然后写入具有相同值的文件 加载了sample.txt,输出为sample\u color.txt,请参见下面的链接 结果,文件的内容不一样 让我知道如何解决它 输入文件:sample.txt 输出文件:sample_color.txt #包括 #包括 #包括 #包括 #包括 使用名称空间std; int main(int argc,char*argv[]) { /*********************************

下面的程序没有像我预期的那样工作。它应该读取具有特定格式的文件,然后写入具有相同值的文件

加载了
sample.txt
,输出为
sample\u color.txt
,请参见下面的链接

结果,文件的内容不一样

让我知道如何解决它

输入文件:sample.txt

输出文件:sample_color.txt

#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
/*****************************************************
1.变量的定义
******************************************************/
FILE*fpr,*fpw;//输入和输出文件的文件指针
内色//
//内部dn1、dn2、dn3、dn4、dn5;
无符号字符r,g,b;
浮动x,y,z;
如果(argc!=3)
{
fprintf(stderr,“用法:%s(1)input_org.txt\n(2)write_xyz FILENAME\n”,argv[0]);
出口(1);
}
printf(“打开的文件名:%s\n”,argv[1]);
if((fpr=fopen(argv[1],“r”)==NULL)
{
printf(“错误\n”);
出口(1);
}
if((fpw=fopen(argv[2],“w”)==NULL)
{
fprintf(stderr,“GSI.raw提供的DSM”);
出口(1);
}
而(fscanf(fpr,“%f%f%f%d%d”、&x、&y、&z、&r、&g、&b)!=EOF)
{

coutr、g、b的类型与格式说明符不匹配

由于
char
小于
int
,因此输入将覆盖变量,这就是
x
的值错误的原因

您应该将类型更改为
int
,以使其按您的需要工作:

int r, g, b;

如果你想知道你的
浮点值的奇怪舍入错误,你应该阅读,如果你的代码编译成功了,你想做什么?程序正在修复“unsigned char->int”。
int r, g, b;