1樓:匿名使用者
參考一下吧,
strcat(buf,"\n");
將你要寫的資料放在buf中,利用strcat函式在後面拼接上換行符\n
int fd=open("/home/wang/time.log",o_creat|o_rdwr,0666);
開啟(建立)你要操作的檔案
write(fd,buf,sizeof(buf));
向檔案中寫入資料
下面是我建立的守護程序列印的日誌檔案資訊,檔案為time.log。內容時每兩秒向檔案中寫入當前時間
2樓:天蠍神經俠侶
linux和unix系統的換行是"\n",而windows的換行並不是直接的"n",是"\r\n"。所以out.write("\n")只能得到乙個黑框,因為windows不認為這是個「換行」。
直接從記事本輸入的話,windows自動輸入了"\r\n",所以從從文字檔案中讀出來的也是"\r\n",可以正常顯示。
那麼這是為什麼呢?稍微學過正規表示式的朋友都知道:\r是回車符,而\n是換行符。windows預設\n在文件中顯示的是乙個空格或者小黑框。所以,要先回車,再換行。
3樓:匿名使用者
你確定write()能往檔案裡寫入資料?
你可以寫入"\n"或者寫入0a和0d這兩個位元組的資料也行
4樓:
linux系統的換行符"\n"
加這個就行了
不過有系統write()函式麼。。。
5樓:韌勁
write
函式向開啟的裝置或檔案中寫資料。
#include ssize_t write(int fd, const void *buf, size_t count); 返回值:成功返回寫入的位元組數,出錯返回-1並設定errno
寫常規檔案時,
write
的返回值通常等於請求寫的位元組數
count
,而向終端裝置或網路寫則不一定。
讀常規檔案是不會阻塞的,不管讀多少位元組,
read
一定會在有限的時間內返回。從終端裝置或網路讀則不一定,如果從終端輸入的資料沒有換行符,呼叫
read
讀終端裝置就會阻塞,如果網路上沒有接收到資料報,呼叫
read
從網路讀就會阻塞,至於會阻塞多長時間也是不確定的,如果一直沒有資料到達就一直阻塞在那裡。同樣,寫常規檔案是不會阻塞的,而向終端裝置或網路寫則不一定。
現在明確一下阻塞(block)這個概念。當程序呼叫乙個阻塞的系統函式時,該程序被置於睡眠(sleep)狀態,這時核心排程其它程序執行,直到該程序等待的事件發生了(比如網路上接收到資料報,或者呼叫
sleep
指定的睡眠時間到了)它才有可能繼續執行。與睡眠狀態相對的是執行(running)狀態,在linux核心中,處於執行狀態的程序分為兩種情況:
正在被排程執行。cpu處於該程序的上下文環境中,程式計數器(
eip)裡儲存著該程序的指令位址,通用暫存器裡儲存著該程序運算過程的中間結果,正在執行該程序的指令,正在讀寫該程序的位址空間。
就緒狀態。該程序不需要等待什麼事件發生,隨時都可以執行,但cpu暫時還在執行另乙個程序,所以該程序在乙個就緒佇列中等待被核心排程。系統中可能同時有多個就緒的程序,那麼該排程誰執行呢?
核心的排程演算法是基於優先順序和時間片的,而且會根據每個程序的運**況動態調整它的優先順序和時間片,讓每個程序都能比較公平地得到機會執行,同時要兼顧使用者體驗,不能讓和使用者互動的程序響應太慢。
在linux命令列下如何將指定的幾行內容寫入到乙個檔案中?
6樓:曹曉山
linux下可以用sed命令向檔案抄
中追加內容。
案例:把/etc/test1檔案中1-10行內容寫入到test2中sed -n '1,10'p /etc/test1 >>test2#將file1的1-10行追加到file2sed命令列格式為:
sed [-nefri] 『command』 輸入文字常用選項:
-n∶使用安靜(silent)模式;
-e∶直接在指令列模式上進行 sed 的動作編輯;
-f∶直接將 sed 的動作寫在乙個檔案內;
-r∶sed 的動作支援的是延伸型正規表示法的語法;
-i∶直接修改讀取的檔案內容,而不是由螢幕輸出。
7樓:小公尺飛貓
sed -n '1,10p' file1 >> file2
將file1的1-10行追加到 file2
8樓:匿名使用者
echo -ne "line1\nline2\nline3\n" > file
line1 line2 line3 是行內容。
9樓:匿名使用者
perl -ne 'print if 1..10' file >result.txt
10樓:星顏霍高原
-fls
/path/to/somefile
:查詢到的所有檔案的長格式資訊儲存到指定檔案中。
linux c函式write()寫入的資料是如何儲存的?read()又是如何讀取的?
11樓:匿名使用者
使用二進位制儲存
如果要讀取裡面第3個student的內容:
lseek(fd, 2 * sizeof(student), seek_set); //即從開始搜尋2個student那麼長。
這樣的前提是student中沒有指標,因為每次執行指標的內容是不確定的。
12樓:
直接是不能儲存的,需要自己組織儲存。比如,你的類有兩個變數int a;char b;那麼按你自定義的格式儲存,一般可以加上識別符號,化為字串就可以了,比如sprintf(buf,"%d%c\r\n",a,b).這樣你就儲存那個buf字串就可以了。
反過來你需要解析字串,涉及查詢和轉化為你的資料型別,再構造類的例項。
用fwrite函式如何實現換行
13樓:豔陽高照的午後
直接輸入"\r\n"即可。
fwrite是c語言函式,指向檔案寫入乙個資料塊。
功能:c語言函式,向檔案寫入乙個資料塊
用法:size_t fwrite(const void* buffer, size_t size, size_t count, file* stream);
注意:這個函式以二進位制形式對檔案進行操作,不侷限於文字檔案
返回值:返回實際寫入的資料塊數目
(1)buffer:是乙個指標,對fwrite來說,是要獲取資料的位址;
(2)size:要寫入內容的單位元組數;
(3)count:要進行寫入size位元組的資料項的個數;
(4)stream:目標檔案指標;
(5)返回實際寫入的資料項個數count。
說明:寫入到檔案的**? 這個與檔案的開啟模式有關,如果是w+,則是從file pointer指向的位址開始寫,替換掉之後的內容,檔案的長度可以不變,stream的位置移動count個數;如果是a+,則從檔案的末尾開始新增,檔案長度加大。
fseek對此函式有作用,但是fwrite[1] 函式寫到使用者空間緩衝區,並未同步到檔案中,所以修改後要將記憶體與檔案同步可以用fflush(file *fp)函式同步。
程式示例:
#include
struct mystruct
;int main(void)
s.i = 0;
s.cha = 'a';
寫的struct檔案*/
fclose(stream); /*關閉檔案*/
return 0;}
14樓:葬愛殺馬特
$text = date('y-m-d h:i:s',$time)."新註冊使用者".$vv['uuid'].',職工表也新增了'.'\r\n';
後邊拼接\r\n也不行...................
Linux檔案系統的系統原理,linux 檔案系統的意思
linux 最早的檔案系統是minix,但是專門為linux 設計的檔案系統 擴充套件檔案系統第二版或ext2被設計出來並新增到linux中,這對linux產生了重大影響。ext2檔案系統功能強大 易擴充 效能上進行了全面優化,也是所有linux發布和安裝的標準檔案系統型別。每個實際檔案系統從作業系...
呼叫函式strcmp,必須包含什麼標頭檔案?stdlib h
娛樂小八卦啊 呼叫strcmp函式要用到 include include stdlib 標頭檔案即standard library標準庫標頭檔案。stdlib.h裡面定義了五種型別 一些巨集和通用工具函式。型別例如size t wchar t div t ldiv t和lldiv t 巨集例如exi...
linux系統怎麼把資料夾裡面的檔案複製到另外資料夾
幻翼高達 linux系統使用cp命令即可將一個資料夾裡面的檔案複製到另外一個資料夾裡面。這個命令相當於dos下面的copy命令,具體用法是 cp r 原始檔 目的檔案 其中引數r是指連同原始檔中的子目錄一同拷貝。和 代表的 是上級目錄以及當前目錄。使用時的兩種情況 1 處在當前目錄複製當前目錄下檔案...