2017-06-12 102 views
0

我正在寫從文本文件從文件中讀取單詞,而忽略空格和」,(c)中

我怎麼能只掃描字與空間或數字,並開始掃描字的程序用空格

結束如果不採取',.()\t\n到我的字符串

我知道我可以使用函數scanf函數,但並沒有完全得到如何使用它的方式

另一個小問題

我正在計算我的文字中有多少行 ,所以我想我應該尋找一個「\ n」號來增加我的計數嗎?

+0

如果您使用'fgets'閱讀xing建議的內容,則可以輕鬆計數行數。 –

+0

如果一個文件沒有以'\ n'結尾,例如它只有''abc「'。這是一個0行文件或1行文件爲您的應用程序? – chux

+0

「我正在編寫一個掃描單詞的程序」 - >發佈那個關於代碼而不是帖子代碼的話題會吸引反對票。建議張貼您的代碼。 – chux

回答

2

首先,當你問一個問題,你需要遵循一些規則,這裏是一個像如何問堆棧溢出問題:

How to ask從堆棧溢出的幫助中心

如果我是做這個任務我會讀取它char使用'while循環'結束於EOF和它的內部'if'檢查是否應該將此字符添加到您的字符串並使用realloc添加它。

對於第二個問題,在第一個問題之前放置另一個'if',它檢查char ==是否爲'\ n',如果是這樣,則爲++計算行數。

在結束它應該是這樣的:

int *input = malloc(sizeof(int)); 
int linesLength = 0; 
int now; 
int lines = 0; 
whlie ((now = getc(file)) != EOF){ 
    if (now == '\n') { 
     lines += 1; 
    } 
    if (/* what chars you want out */){ 
     /* add your char using realloc */ 
     linesLength += 1; 
    } 
} 

順便說一句,這是完全一樣的任務,我需要做的,直到18本月和你的名字看起來很熟悉,關鍵是,這是不是作業網站,下次請注意。

+0

'fgets()'並在字符的基礎上放棄了'realloc()'腦損壞的想法。 – 0andriy

+1

爲什麼腦損傷@ 0andriy?!?!首先,這是粗魯的,如果你認爲他應該使用fgets(),那麼第二個答案是答案。 – Yonlif

+0

我對你的代碼有點困惑。我沒有看到它用'input'做了什麼,但是這行肯定是錯誤的:'int * input = malloc(sizeof(int *));'。這應該是:'int * input = malloc(sizeof(int));',或者更好:'int * input = malloc(sizeof * input);'。如果你打算在這裏使用'char',第二個版本只需要改變左邊的類型。而且,對於添加到存儲緩衝區的每個字符,'realloc()'效率極低。最好定期根據需要重新分配到合理的大小,如果需要,可以在最後修剪到最終尺寸。 –