Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C fwrite a pid\t不工作_C_Fwrite - Fatal编程技术网

C fwrite a pid\t不工作

C fwrite a pid\t不工作,c,fwrite,C,Fwrite,我有以下代码: ... printf("Started %d", pid); FILE * fh; fh = fopen("run/source.pid", "wb"); fwrite(&pid, sizeof(int), 1, fh); fclose(fh); 然而,编写的pid文件编写的是行话,而不是整数,虽然pid\u t只是一个int,但我甚至将执行sizeof(pid\u t)与第二个参数联系起来,我得到了类似的问题 有什么想法吗?提前谢谢你的帮助 谢谢我不太理解这个问题(上

我有以下代码:

...
printf("Started %d", pid);
FILE * fh;
fh = fopen("run/source.pid", "wb");
fwrite(&pid, sizeof(int), 1, fh);
fclose(fh);
然而,编写的pid文件编写的是行话,而不是整数,虽然pid\u t只是一个
int
,但我甚至将执行
sizeof(pid\u t)
与第二个参数联系起来,我得到了类似的问题

有什么想法吗?提前谢谢你的帮助


谢谢

我不太理解这个问题(上下文太少),但问题可能是您正在文本编辑器、终端等中看到该文件

fwrite()写入原始数据,例如,假设您有一个pid编号,比如说12,然后使用fwrite编写该编号,如下所示:

fwrite(&pid, sizeof(int), 1, file);
fwrite()会将一个32位整数写入文件
文件
,也就是说,根据处理器类型,字节序列如下:
0012

然而

fprintf()将写入在所有终端或文本编辑器中可见的字节序列:
49 50
(ASCII字符与平台无关)


希望这有帮助。

POSIX说:
blksize\u t
pid\u t
ssize\u t
应该是有符号整数类型。您是否尝试过使用
fprintf(fh,“%d”,pid)
而不是
fwrite()
只是为了看看会发生什么。这样做有效,但我仍然无法理解为什么fwrite不起作用。我发布了一个答案供您查看,希望我的答案足够清晰,没有打字错误。除息的