使用 putw() 时获取文件中的乱码值
Getting gibberish values in files when putw() is used
程序从用户那里获取整数输入并将它们存储在一个文件中,然后将整数分类到两个不同的文件中(奇数和偶数),当我使用 fprintf 时它会覆盖以前的值,这就是我尝试 putw() 的原因但是我在文件中得到乱码值
这是我的代码:
#include<stdio.h>
int main()
{
int n,a[50];
printf("\nEnter no of entries:");
scanf("%d",&n);
FILE *f1,*f2,*f3;
f1=fopen("Numbers.txt","w+");
for(int i=0;i<n;i++)
{
printf("\nEnter a number:");
scanf("%d",&a[i]);
putw(a[i],f1);
}
fclose(f1);
f1=fopen("Numbers.txt","r");
for(int i=0;i<n;i++)
{
if(a[i]%2==0)
{
f2=fopen("EvenNum.txt","w+");
putw(a[i],f2);
fclose(f2);
}
else
{
f3=fopen("OddNum.txt","w+");
putw(a[i],f3);
fclose(f2);
}
}
}
那不是 putw
所做的。 putw
以二进制而不是文本形式写入 int
。你是说 fprintf(f1, "%d", a[i]);
?
getw
和 putw
的手册页说要改用 fread
和 fwrite
,这似乎不适合这里。
f1=fopen("Numbers.txt","w+");
会破坏文件。您要 "a+"
追加吗?
程序从用户那里获取整数输入并将它们存储在一个文件中,然后将整数分类到两个不同的文件中(奇数和偶数),当我使用 fprintf 时它会覆盖以前的值,这就是我尝试 putw() 的原因但是我在文件中得到乱码值
这是我的代码:
#include<stdio.h>
int main()
{
int n,a[50];
printf("\nEnter no of entries:");
scanf("%d",&n);
FILE *f1,*f2,*f3;
f1=fopen("Numbers.txt","w+");
for(int i=0;i<n;i++)
{
printf("\nEnter a number:");
scanf("%d",&a[i]);
putw(a[i],f1);
}
fclose(f1);
f1=fopen("Numbers.txt","r");
for(int i=0;i<n;i++)
{
if(a[i]%2==0)
{
f2=fopen("EvenNum.txt","w+");
putw(a[i],f2);
fclose(f2);
}
else
{
f3=fopen("OddNum.txt","w+");
putw(a[i],f3);
fclose(f2);
}
}
}
那不是 putw
所做的。 putw
以二进制而不是文本形式写入 int
。你是说 fprintf(f1, "%d", a[i]);
?
getw
和 putw
的手册页说要改用 fread
和 fwrite
,这似乎不适合这里。
f1=fopen("Numbers.txt","w+");
会破坏文件。您要 "a+"
追加吗?