我有一个功能:
int csv_fwrite2 (FILE *fp, const void *src, size_t src_size, unsigned char quote){
const unsigned char *csrc = src;
if (fp == NULL || src == NULL)
return 0;
if (fputc(quote, fp) == EOF)
return EOF;
while (src_size) {
if (*csrc == quote) {
if (fputc(quote, fp) == EOF)
return EOF;
}
if (fputc(*csrc, fp) == EOF)
return EOF;
src_size--;
csrc++;
}
if (fputc(quote, fp) == EOF) {
return EOF;
}
return 0;
}基本上,它接受src中的内容,并将src的内容输出到一个文件(csv格式)中,并且引号字符将是您传递的参数。
例如。
src = ["name", "age", "gender"]; csv_fwrite2 (fp, src, src_size, '"');
在输出文件中,它将包含:"name","age","gender"
如果:
src = ["name", "age", "gender"]; csv_fwrite2 (fp, src, src_size, '|');
然后输出是:
|name|,|age|,|gender|
一切正常,但是,当我输入空字符作为引号时:
csv_fwrite2 (fp, src, src_size, '\0'); `
与其将src的内容作为字符串写入文件,不如将其输出如下:
006e 616d 6500 2c00 6167 6500 2c00 6765
而不是:name,age,gender
有什么想法吗?
发布于 2017-08-04 16:01:58
我认为这是您所期望的文件,但是它是作为十六进制转储加载的,而不是作为编辑器中的文本加载的,因为'\0'是一个特殊的字符。
https://stackoverflow.com/questions/45510966
复制相似问题