簡體   English   中英

使用Fscanf解析特定的輸入文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM