文件写入空字符,该如何解决
文件写入空字符
请问怎样在文件中写入空字符(ASCII 为 0x00)? 一般的写函数都会以空字符'\0'为判断结束条件或者assert()条件。
C语言实现。给出方法或代码都行。
谢谢。
------解决方案--------------------
FILE *fo = fopen("_a","wb");
fwrite(" dddd", 8, 1,fo);//类似的这样不就行了,写好几个进去呢
fclose(fo);
------解决方案--------------------
设个 char buff[100];
memset(buff,0x00,sizeof(buff));
fwrite(buff,1,sizeof(buff),fp);
lz试试看
------解决方案--------------------
空字符是0x0,不是0x30,空格也不是空字符。
size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
fwrite写入的是字节数,不是字符数,不是以空字符结尾控制的,直接使用这个函数就能写入空字符。写完后用二进制工具打开就可以看到师父有0x00值了。
unsigned char buf[10];
memset(buf,0,10);
fwrite(buf,1,9,fp);
这样就可以的。
写空字符不是没写。你随便用个二进制工具打开一个exe文件看看,里头一堆的空字符。
请问怎样在文件中写入空字符(ASCII 为 0x00)? 一般的写函数都会以空字符'\0'为判断结束条件或者assert()条件。
C语言实现。给出方法或代码都行。
谢谢。
------解决方案--------------------
FILE *fo = fopen("_a","wb");
fwrite(" dddd", 8, 1,fo);//类似的这样不就行了,写好几个进去呢
fclose(fo);
------解决方案--------------------
设个 char buff[100];
memset(buff,0x00,sizeof(buff));
fwrite(buff,1,sizeof(buff),fp);
lz试试看
------解决方案--------------------
空字符是0x0,不是0x30,空格也不是空字符。
size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
fwrite写入的是字节数,不是字符数,不是以空字符结尾控制的,直接使用这个函数就能写入空字符。写完后用二进制工具打开就可以看到师父有0x00值了。
unsigned char buf[10];
memset(buf,0,10);
fwrite(buf,1,9,fp);
这样就可以的。
写空字符不是没写。你随便用个二进制工具打开一个exe文件看看,里头一堆的空字符。