我的问题是如何创建一个格式字符串,其中包含整行文本(包括嵌入空格)?如何使用fprintf打印一个文本行(包括空格)
我有一个缓冲区定义
char buf[380];
当我在一行文本阅读,我确保buf[378] = '\n';
和`BUF [379] = '\ 0';”
我编辑一个缓冲区,然后使用fprintf
将其写入到一个已经打开的文件:
fprintf(outfile, buf);
我得到编译时,这样的警告:
ex_split.c: In function ‘main’:
ex_split.c:65:3: warning: format not a string literal and no format arguments [-Wformat-security]
,我不挺确定如何编写格式化字符串,以便可以编写所有的buf,因为,正如我记得的那样,%s将停留在第一个空间,并且这些数据中有很多空格,这是我需要的。它是位置格式化的数据。
附录
让我重申这个问题。我相信%s会导致fprintf在每行数据中的第一个0x20字符处停止扫描,其中有一个或多个空间和非空间可读的ASCII数据。我的假设是否正确?
如果您“知道”该字符串是安全的,那么您总有可能错了。使用'“%s”'可以减少您担心的错误。或者,由于OP实际上不需要格式化任何东西,'fputs(s,outfile);'可能是更好的解决方案。 –
我想要清除警告,这就是为什么我问这个问题。而奇怪的是,在CentOS 5上,我没有得到明显不同于Ubuntu 12.04的gcc版本的警告。 – octopusgrabbus