簡體   English   中英

在C中將空白行寫入文件

[英]Write blank line to file in C

我使用了write函數將一些東西寫入文件中。 現在我想在下一個寫入功能之前在文件中插入一個空白鏈接,有人知道該怎么做嗎?

Write(logs,log,strlen(log));

是我的第一篇文章,所以現在的新行將是:

Write(logs,'/n',strlen(log));

還是應該創建一個新的char[3] = '/n';

假設您的意思是POSIX write()函數,則應如下所示:

write(logs,"\n",1);

請注意, "\\n"是一個1字符串-您可能需要"\\r\\n"具體取決於您是否需要回車符和文件中的換行符。

我知道這篇文章已經很老了,但是,我正在創建一個日志文件,當我嘗試寫一個“ \\ n”時,它不會寫它。...:

 write(fd,"\\n\\n==== NEW CLIENT ====\\n\\n",24); 

文件中的輸出為:

 ==== NEW CLIENT ==== 

沒有任何空白行...任何想法嗎? 即使我把:

 write(fd,"\\n",1); 

沒事做... :/

我明白了...我正在linux中編譯程序並在Windows中檢查日志文件,如果我在linux中打開日志文件就可以了...

您需要解決的第一個問題是換行符由反斜杠-n( '\\n'"\\n" )而不是斜杠-n表示。

當您寫'/n' ,您應該得到一個關於多字符字符常量的編譯器警告,該常量是C的不可移植部分。

顯然,您可以創建一個變量來保存換行符,但是實際上並不需要它。 字符串文字就可以了。 如果這樣做,正確的符號將是:

const char newline[] = "\n";

您可以這樣寫:

const char rather_odd[3] = { '/n' };

但是...大括號是必需的,並且第一個字符具有與編譯器相關的值,其他兩個字符為NUL '\\0' 這不僅占用了最小必要空間。 newline變量是一個2字節的數組。

使用非標准的Write()函數,正確的語法可能是:

Write(logs, "\n", 1);

這發出一個換行符; 如果前一個字符串( log字符串)本身不是由換行符終止的,則文件中沒有空行; 您將不得不編寫第二個換行符。 您甚至可能要測試一下:

size_t len = strlen(log);
Write(logs, log, len);
len = (log[len-1] == '\n') ? 1 : 2;
Write(logs, "\n\n", len);

還要注意,GCC會警告您有關名為log的全局變量(因為C標准保留了該名稱)。 局部變量可以。

$ cat x.c
int x = '/n';
int log = 2;
$ gcc -c x.c
x.c:1:9: warning: multi-character character constant
x.c:2:5: warning: built-in function ‘log’ declared as non-function
$

最近,我在恢復一些大約20年前修改的代碼時遇到了這個問題。

(在MacOS X 10.6.6上使用GCC 4.5.2進行測試。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM