[英]Parsing Specific Input File Using Fscanf
我一直在嘗試使用fscanf讀取我的應用程序上的輸入文件。
這是輸入文件
3
Process#1 - 2Kb
3
exec 20
io 5
exec 50
Process#2 - 8Kb
1
exec 100
Process#3 - 8Kb
4
exec 50
io 50
exec 50
io 50
首先,我想閱讀第一個“3”,我沒有遇到任何問題。
之后,我將需要讀取#(即1)之后的信息和“kb”字符串后面的數字(即2)。
為什么這個fscanf沒有這樣做?
fscanf(inputFile, "Process#%d - %dKb", &id, &mem );
我該怎么做 ?
提前致謝
可能是因為在3
之后留下的新線未被P
in Process
識別。
這就是為什么許多人避免使用scanf()
; 使用fgets()
或相關函數(但不是 gets()
!)通常更簡單,然后使用sscanf()
。
請注意嚴格檢查scanf()
的返回值。 如果你不這樣做,你就不會知道什么時候出錯了。 請注意,檢查也是針對正確的轉化次數。
#include <stdio.h>
int main(void)
{
int i;
int id;
int mem;
if (scanf("%d", &i) != 1)
printf("oops!\n");
/* With space - reads past newline on first line */
/* Without space - prints 'thank goodness!' */
if (scanf(" Process#%d - %d", &id, &mem) != 2)
printf("thank goodness!\n");
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.