【问题标题】:Transform TXT to BIN, and print out the content of BIN将TXT转换为BIN,并打印出BIN的内容
【发布时间】:2013-12-24 21:33:11
【问题描述】:

我正在尝试将 txt 文件转换为二进制文件,该 txt 包含 1-20 的 数字 除以(输入)。只要我知道它工作正常(调试它)但也许它可能包含错误,所以你可以看到它。之后我想检查什么是我的二进制文件。 我想打印二进制文件来监控。但是它会打印出一段内存污垢您能帮我找出代码中的问题吗?提前致谢

void txt_to_bin (void)                                   /*Make binary from txt*/ 
{
    FILE *ft,*fb;
    int a;
    ft = fopen("binadatok.txt","rt");
    fb = fopen("versenyazonosito.dat","wb");
    while (fscanf(ft,"%d\n",&a) != EOF)
    {
        fwrite(&a,sizeof(a),1,fb);
        printf("%d\n", a);
    }
}

void bin_olvas(void)                       /*Print out the binary*/   
{
    FILE *f;
    int k;
    f = fopen("versenyazonosito.dat","rb");
    while(!feof(f))
    {
        (fscanf(f,"%d\n",&k) != EOF);  
        printf("%d\n", k);
    }
    fclose(f);
}

【问题讨论】:

  • (fscanf(f,"%d\n",&k) != EOF); 这应该怎么做?
  • 我想从 f 中扫描一个 int,并将其存储在 k 中
  • 但是你为什么要把它括在括号中并在它后面加上一个分号(abcd == 1234);?给定 -Wall,GCC 可能会抱怨:“语句没有意义”。
  • 首先我没有附上它,但如果我这样做了,我会得到一个错误“语法错误:缺少';'在标识符“printf”之前“
  • 随机添加构造直到错误“消失”为cargo cult programming

标签: c file binary fread scanf


【解决方案1】:

fscanf(f, "%d\n", &k) 仅对读取 ASCII 文件有用。您不能使用它从versenyazonosito.dat 读取二进制数据。您将不得不使用 fread 或类似的东西。

【讨论】:

  • 按照您对 fread 的说法更改了我的读取二进制文件,但它仍然返回内存污垢( while(!feof(f)) { (fread(&k,sizeof(k),1,f)) ; printf("%d\n", k); }
猜你喜欢
  • 2012-11-04
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 2011-09-29
  • 2013-08-26
  • 2013-02-23
相关资源
最近更新 更多