我有一个要求,即C代码从数据库中提取字符串数据并将其写入文件。数据库中的字符串数据可以包含任何类型的字符
例如:说明字段包含数据“Adj \ 342 \ 200 \ 223数据”,当我将文件写入时写入文件Adjâ数据“。类似地,此描述字段可以包含任何类型的数据,我的代码只是在从数据库中提取并写入文件后才读取并使用 strcpy 。
如何将数据写入描述字段中的文件?
答案 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”可能是不安全的。