c - 为什么应用程序从文件中读取了不正确的整数?

标签 c

当我尝试从文件中读取整数时,代码最终读取的数字与预期不同。

数据文件包含以下数字:

1111 111 222 333 444 555 666 777 888 -1

当我读取文件时,它返回以下数字:

825307441   825307424   842150432   858993440   875836448
892679456   909522464   926365472   943208480   170994976

为什么会这样?

相关代码:

/* A file named data contains some integer numbers.write a program to
   read these numbers and store the odd numbers in one file and store 
   the even numbers in file.*/

  int main()
  {
    FILE *fp1,*fp2,*fp3;
    int number;

    fp1=fopen("DATA","r");
    fp2=fopen("even","w");
    fp3=fopen("odd","w");

    printf("numbers in  file are\n");
    while((number=getw(fp1))!=EOF)
    {
      printf("%d\t",number);
    }
    fclose(fp1);
    fp1=fopen("DATA","r");


    while((number=getw(fp1))!=EOF)
    {
      if((number%2)==0)
      {
        putw(number,fp2);
      }
      else
      {
        putw(number,fp3);
      }
    }
    fclose(fp1);
    fclose(fp2);
    fclose(fp3);

    fp2=fopen("even","r");
    fp3=fopen("odd","r");

    printf("\nnumbers in even file are\n");
    while((number=getw(fp2))!=EOF)
    {
      printf("%d\t",number);
    }

    printf("\nnumbers in odd file are\n");
    while((number=getw(fp3))!=EOF)
    {
      printf("%d\t",number);
    }
    fclose(fp2);
    fclose(fp3);
    return 0;

  }

最佳答案

您正在阅读以纯文本表示的数字。

getw 读取一个机器字(例如,在我的 64 位机器上说 8 个字节),当你写出来时,它会把它写出来。这不是您想要的。

使用 fscanf 而不是 getw 来读取格式化值。

关于c - 为什么应用程序从文件中读取了不正确的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179729/

相关文章:

c - 使用C语言中的套接字向FTP服务器发送命令

c - 制作不同字符出现次数的直方图

Python:通过嵌入复杂的算法改进子字符串搜索

c - 放弃对 C 的 SYN 攻击

c - 排序的双向链表在反向访问时给出总线错误

C-SERVER - 在 : strncpy(ii2, iii + 5, 3) 的奇怪行为;

c - 将一维字符数组转换为二维字符数组而不分配内存

将 char 数组转换为字符串 [和 Pebble]

c - uint32_t 代表什么?

c - 如何确定将多字符char常量赋值给char变量的结果?