如何使用write()系统调用将整数写入文件

时间:2019-11-27 15:53:49

标签: c filesystems buffer system-calls

如何使用write()系统调用将整数写入文件中

 //write(fd,buffer,strlen(buffer));
 //The buffer in the write() system call has to be an char[]; 
 //if i want to write integer such as 

for(int i = 0, i < 10; i++){

    write(fd,i.??); // error 
    // How can i write the integer in to the file by using the write() system call
}

2 个答案:

答案 0 :(得分:1)

如果要二进制输出:

 write(fd, &i, sizeof(i));

如果要输出文本,请每行使用一个十进制数字:

char tmpbuf[50];
int n = sprintf(tmpbuf, "%d\n", i);
write(fd, tmpbuf, n);

如果要输出文本,则每个int为8个十六进制数字:

char tmpbuf[20];
int n = sprintf(tmpbuf, "%08X", i);
write(fd, tmpbuf, n);

如果不确定想要哪个,请尝试三种方式,然后查看生成的输出文件。 (如果没有“十六进制转储”程序或二进制编辑器,“二进制”输出将不容易看到。)

答案 1 :(得分:-2)

您可以先使用sprintf()函数来创建字符串,然后在write()中使用它,例如:

char number_s[2];
sprintf(number_s,"%2d",i);
write(fd,number_s,strlen(number_s));