C-十六进制值0x00未写入文件
我正在写一个程序,我想写一些十六进制地址的文件。问题是,当我C-十六进制值0x00未写入文件,c,hex,hexdump,C,Hex,Hexdump,我正在写一个程序,我想写一些十六进制地址的文件。问题是,当我hextump-C temp文件时,我只看到bc ab,\x00由于某种原因没有写入文件。也许他们被认为是EOF角色?非常感谢您的帮助 File *file; char *buffer, *ptr; ptr = buffer; *(ptr++) = '\xbc'; *(ptr++) = '\xab'; *(ptr++) = '\x00'; // problem *(ptr++) = '\x00'; file = fopen("te
hextump-C temp
文件时,我只看到bc ab
,\x00
由于某种原因没有写入文件。也许他们被认为是EOF角色?非常感谢您的帮助
File *file;
char *buffer, *ptr;
ptr = buffer;
*(ptr++) = '\xbc';
*(ptr++) = '\xab';
*(ptr++) = '\x00'; // problem
*(ptr++) = '\x00';
file = fopen("temp", "w");
if (file == NULL) {
fprintf(stderr, "Opening file failed.\n");
exit(1);
}
fprintf(file, "%s", buffer);
fclose(file);
您试图用fprintf的%s写入空字符。Null字符是字符串终止符。不会那样写的。使用fwrite或fputc。您试图用fprintf的%s写入空字符。Null字符是字符串终止符。不会那样写的。使用FWORD或FPTC.使用开放模式<代码>“WB”也考虑使用<代码> fWord<代码>,而不是<代码> fPrPtf<代码>如果您不希望它在第一个<代码> \x00 < /代码>停止,值0(\x00)是一个特殊的值(NULL),它通常用来指示字符串的结尾。@标记<代码> 0x00 < /代码>不是NULL@M.M哦,对不起,空字符或字符串终止符如何?使用开放模式<代码>“WB”< /代码>也考虑使用<代码> fWord<代码>,而不是<代码> fPrPtf<代码>如果您不希望它在第一个代码> \x00 < /代码>停止,则值0(\x00)是一个特殊值(null)通常用于指示字符串的结尾。@Marker
0x00
不可用NULL@M.M对不起,空字符或字符串终止符怎么样?