我的問題是如何創建一個格式字符串,其中包含整行文本(包括嵌入空格)?如何使用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