首页 文章

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

提问于
浏览
0

我的问题如下:我需要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

    只需使用一个二维数组,其中每一行都存储一行输入字符串 . 至于接受输入,请要求用户输入他/她将给出的行数并循环通过它 .

    #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]);
        }
    }
    

相关问题