我有一個函數:NULL字符改變輸出文件
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|
一切正常,但是當我輸入NULL字符作爲報價:
csv_fwrite2 (fp, src, src_size, '\0');
`
而不是寫SRC的內容複製到該文件作爲字符串,輸出是一樣的東西:
006e 616d 6500 2c00 6167 6500 2c00 6765
代替:name,age,gender
有什麼想法?
不'而(src_size){ 如果(*中國證監會==報價){ 如果(的fputc(報價,FP)== EOF) ... } 如果(的fputc(*證監會,FP) == EOF) ... }'print'quote' twice? – chux
你用什麼程序/工具查看文件的輸出? – chux
提示:最好保留「NULL」以標識_null指針constant_「NULL」。對於_null character_,使用''\ 0''或_null character_。 – chux