gpt4 book ai didi

c - 如何不以二进制格式 write()

转载 作者:行者123 更新时间:2023-11-30 19:54:46 25 4
gpt4 key购买 nike

我有一个结构,我想将其作为一条记录写入常规文件,并使用逗号分隔字段。例如

    struct A {
int a;
int b;
} test;

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

问题是记录最终在文件中以二进制形式存在。这是直观的,因为当我将变量存储在字符数组中时,我从变量中去掉了“类型”。我可以使用标准 io,但我想了解如何通过具有概述的约束的标准 Linux 系统调用来实现所需的结果。我怎样才能保留变量的“典型性”。我所说的类型性是指如果变量的类型为 int,则常规文件应该具有人类可读的数字。

最佳答案

您想要做的事情类似于 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)); .

关于c - 如何不以二进制格式 write(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14322952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com