2016-01-03 18 views
1

嗨所以我有一個程序,如果有一個@在文本文件的第一行的開頭它需要被忽略,你如何跳轉到下一行文件?忽略@後的所有內容?例如: 例如:跳到文件的下一行忽略內容

@1234 
5 

我想打印5,其餘的被忽略。

我只設法跳過@如果有什麼背後

while (a == '@' || a == '\r'|| a == '\n') {    
    fscanf(inp, "%c", &a);    
} 

回答

0

相反

while (a == '@' || a == '\r'|| a == '\n') {    
    fscanf(inp,"%c",&a);    
} 

嘗試(僞代碼):

If FirstChar == '@' 
    Loop/scan until '\n' 

On nextline here 

如果你想使用fscanf()

如果需要更好的性能,請直接在緩衝區上工作。

+0

@chqrlie - 是的,是的武術的思考相同,而實際上鍵入它 - 我將它刪除。內存映射也可以使用CreateFileMapping()在Windows上運行。 –

0

至於你剛纔的問題,如果你的希望忽略註釋行初始@,它是強烈推薦fgets()到逐行讀取文件中的行,並直接而忽略註釋行來處理非註釋行。

它與fscanf做它實際上是不平凡的,因爲根據您的格式線,換行可能已經或可能不會被消耗。

如果你是在一個行的開始,並希望讀下一個字符而忽略了註釋行,這樣做:

int c; // Must be int to accommodate for EOF. 

while ((c = getc(inp)) == '@') { 
    while ((c = getc(inp)) != EOF && c != '\n') 
     continue; 
} 

// Here c contains the first char from a non comment line or EOF.