使用 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]);?

getwputw 的手册页说要改用 freadfwrite,这似乎不适合这里。

f1=fopen("Numbers.txt","w+"); 会破坏文件。您要 "a+" 追加吗?