在C中显示特殊字符

时间:2011-05-05 09:21:50

标签: c

我有一个要求,即C代码从数据库中提取字符串数据并将其写入文件。数据库中的字符串数据可以包含任何类型的字符

例如:说明字段包含数据“Adj \ 342 \ 200 \ 223数据”,当我将文件写入时写入文件Adjâ数据“。类似地,此描述字段可以包含任何类型的数据,我的代码只是在从数据库中提取并写入文件后才读取并使用 strcpy

如何将数据写入描述字段中的文件?

1 个答案:

答案 0 :(得分:2)

认为最简单的解决方案是逐字节写入 - 与缓冲无关紧要:

int pos = 0;
FILE *fp = 0;
//...
fp = fopen("somefile.txt", "w");
//...
while(buffer[pos])
    if(buffer[pos] < 32 || buffer[pos] > 127) // change bounds for non-printable chars as you like
        fprintf(fp, "%c", buffer[pos++]);
    else
        fprintf(fp, "\\%u", buffer[pos++]);

编辑: 可能误解了你的问题。在实际使用字符串时只使用字符串函数。对于二进制数据,使用二进制函数(例如,提到的memcpy())。

编辑2/3: 不要将值打印为“%d”或“%u” - 应为“%3o”以打印为3位八进制数。如果跟随其他数字,使用“%o”可能是不安全的。