2011-02-03 55 views
0

一個如何將一個字符串的結尾附加一個空字符從對各行不同大小的弦......像這樣一個文件的讀取:從C中的文件讀取字符串後放置一個空值?

AAAAA BBBBB

AAAA BBBBBBB

AAAAA BBBBB

我只想讀取每行的第一個字符串。我想把它放到一個字符串中。但是,C不會在字符串末尾放置空值,您必須自己做。如何在使用fscanf時在字符串末尾獲得空字符...可能嗎?我是否需要使用另一個函數來讀取文件而不是fscanf?

對不起,這個簡單的問題。我只是無法在任何地方找到答案...

+0

你試過了嗎?它與你期望的有什麼不同? – 2011-02-03 22:27:47

+0

是的。我試圖做一個strcat我讀入的字符串來處理null,但我得到錯誤。 – Bri 2011-02-03 22:29:26

+0

可能是另一個錯誤,正如米克爾說的那樣,它已經被添加了。 – 2011-02-03 22:32:04

回答

1

你的意思是你想要在每行結尾處有一個空值?

Linux fscanf文檔說如果您使用的是%s,則會自動添加null。

s  Matches a sequence of non-white-space characters; 
      the next pointer must be a pointer to character array 
      that is long enough to hold the input sequence and 
      the terminating null character ('\0'), which is 
      added automatically. 

還是你的意思,你想有一個空處處有輸入文件的空間?

strtok將是實現這一目標的一種方式。

0

聲明最大行長度爲任意大小的字符的緩衝區。使用fgets()函數讀取緩衝區中的每一行... fgets()將null終止緩衝區。

0

您應該使用standard-lib str函數來構建字符串。他們會終止'\ 0'。

#define MAXLINE 1000 
char line[MAXLINE], yourstring[MAXLINE]; 
while(fgets(line,MAXLINE,yourfilepointer)) 
{ 
    sscanf(line,"%s",yourstring); /* here has yourstring ever a terminating '\0' */ 
    printf("first word is: %s\n",yourstring); 
} 
0

創建兩個緩衝區:

char buf1[1000], buf2[1000]; 

藉此讀取一行中的第一個字:

fscanf(f,"%s", buf1); 

然後用它來讀取行的其餘部分:

fscanf(f,"%[^\n\r]s", buf2); 

現在你有第一個詞buf1buf2的其餘行。

相關問題