scanf读取输入的问题太快了?

时间:2018-02-24 21:56:45

标签: c scanf

我的问题如下:我需要scanf来读取多行用户输入。用户可以输入由空格或换行符分隔的任何字符组合。我的目标是获取由whitspace或换行符分隔的每个输入,并通过printf处理它并输出。但是,我不允许一次存储多个输入。我的问题是:每次用户按下回车键时,scanf会读取整行,因为我在while循环中有scanf!= EOF。但是,在用户按下EOF之前,我不希望scanf读取所有输入行。这可能吗?以下是一些示例:

一些伪代码:

User Input:
cat dog mouse rabbit
snake dog
pink bob
joke*/

//Some pseudo code:

char input[100];
while (scanf("%s", input) != EOF) {
    printf("%s", input);
}

总之,我不希望scanf在用户按下enter时读取,因为如果是,则printf将激活,但仍然允许用户输入内容。 有没有办法绕过这个?注意:我必须使用scanf,我不能在单个数组中存储多个单独的输入(如狗或猫)。 谢谢。

1 个答案:

答案 0 :(得分:0)

仅使用二维数组,其中每一行存储一行输入字符串。至于接受输入,要求用户输入他/她将给出的行数,然后循环浏览。

#include<stdio.h>
void main(){
    char inp[10][50];
    int i,j,n;
    printf("\nenter the number of lines: ");
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf(" %[^\n]s",inp[i]);
    }
    //for printing it out.. follow the same with printf
    printf("\nthe strings are:\n");
    for(i=0;i<n;i++){
        printf("%s\n",inp[i]);
    }
}