嗨所以我有一個程序,如果有一個@在文本文件的第一行的開頭它需要被忽略,你如何跳轉到下一行文件?忽略@後的所有內容?例如: 例如:跳到文件的下一行忽略內容
@1234
5
我想打印5,其餘的被忽略。
我只設法跳過@
如果有什麼背後
while (a == '@' || a == '\r'|| a == '\n') {
fscanf(inp, "%c", &a);
}
嗨所以我有一個程序,如果有一個@在文本文件的第一行的開頭它需要被忽略,你如何跳轉到下一行文件?忽略@後的所有內容?例如: 例如:跳到文件的下一行忽略內容
@1234
5
我想打印5,其餘的被忽略。
我只設法跳過@
如果有什麼背後
while (a == '@' || a == '\r'|| a == '\n') {
fscanf(inp, "%c", &a);
}
相反
while (a == '@' || a == '\r'|| a == '\n') {
fscanf(inp,"%c",&a);
}
嘗試(僞代碼):
If FirstChar == '@'
Loop/scan until '\n'
On nextline here
如果你想使用fscanf()
。
如果需要更好的性能,請直接在緩衝區上工作。
至於你剛纔的問題,如果你的希望忽略註釋行初始@
,它是強烈推薦與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.
@chqrlie - 是的,是的武術的思考相同,而實際上鍵入它 - 我將它刪除。內存映射也可以使用CreateFileMapping()在Windows上運行。 –