如何以二进制格式不写()

Jim*_*imm -2 c linux

我有一个结构,我想写一个常规文件作为一个记录,用逗号分隔字段.例如

    struct A {
      int a;
      int b;
   } test;
Run Code Online (Sandbox Code Playgroud)

给定test.a=1test.b = 2,常规文件将具有相应的1,2一行记录.另一个要求是,我想用一个系统调用来编写整个结构.所以,我创建了一个char buffer[10],将int a,b的值存入缓冲区,用逗号分隔和换行符,并使用Linux系统write()调用来写缓冲区.

问题是记录最终在文件中以二进制形式出现.这是直观的,因为我从变量中取走了"类型",我将它们存储在char数组中.我可以使用标准的io,但我想学习,如何通过标准的Linux系统调用以及概述的约束来实现预期的结果.我怎样才能保持变量的"典型性".通过类型我的意思是,如果变量是int类型,则常规文件应该具有人类可读的数字.

who*_*oot 5

fprintf(fh, "%d,%d\n", test.a, test.b);如果你打开输出文件,你要做的就是这样fopen.如果你真的必须write()出于某种原因使用,你可以sprintf(buffer, "%d,%d\n", test.a, test.b); write(fd, buffer, strlen(buffer));.

  • 他希望整数在输出文件中显示为人类可读的数字,他肯定会得到它.当你拥有的是逗号分隔的数字时,类型是如何丢失的? (2认同)