如何使用scanf从下一行输入数据中获取输入?

时间:2014-05-09 05:00:46

标签: c string char scanf

我有5行输入,我只关心使用其中两行(它们是在文本文件中):

1 -- input function one
L 123.0 21.0
2 -- input function 2
2.0 3.0
3.0 2.0

我想从第一行使用 1 ,然后我想跳到第2行。

在我使用第2行后,我想在第3行读取数字 2

我想再次跳到行尾并使用第四行和第五行。

我只能使用getchar(),scanf,if和while来执行此操作。 这是我的代码的一部分,我只是想让它工作。

int
main(int argc, char *argv[]) {
    char ch;
    int j;
    if(scanf("%d", &j) == 1){
        printf("Got %d lines\n", j);
    }
    scanf("%c", &ch);
    printf("%c", ch);
    return 0;
}

如果我把

scanf("%d -- input function one\n", &j)

然后我最终到达了我想去的地方,但仅限于" - ' stuff' "是scanf中%d之后的确切短语。

我能做些什么来跳到行尾?得到输出:

获得1行

1 个答案:

答案 0 :(得分:3)

这是我的建议。

// Read 1 from the first line.
if(scanf("%d", &j) == 1){
    printf("Got %d lines\n", j);
}

// Read the rest of the line but don't
// save it. This is the end of the first line
scanf("%*[^\n]s");

// Read the next line but don't save it.
// This is the end of the second line.
scanf("%*[^\n]s");

// Now read the 2 from the third line.
if(scanf("%d", &j) == 1){
    printf("Got %d lines\n", j);
}

// Read the rest of the line but don't
// save it. This is the end of line 3
scanf("%*[^\n]s");

// Now the fourth line can be read.

<强>更新

scanf("%*[^\n]s");

应该是

scanf("%*[^\n]s\n");

也是为了消费'\n'