我的问题如下:我需要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,我不能在单个数组中存储多个单独的输入(如狗或猫)。 谢谢。
答案 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]);
}
}