我编写了一个程序,但它不会等待接受我的输入。它需要现成的输入。但我只想一一输入。
#include<stdio.h>
void input(char a[]){
printf("%s",a);
}
int main(){
char c[50];
int choice=1;
while(choice!=0){
printf("\nEnter the number corresponding your choice\n1.Input 2. Output 3.Arithmetic");
scanf("%d",&choice);
switch(choice){
case 1:
printf("write input statement of C:\n");
fgets(c,11,stdin);
input(c);
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
printf("invalid choice enter again \n");
}
}
}
这里它需要像这样的输入“1 hello” 但我想先 5 只 1 然后等待它再次给我指示再次输入。
我只尝试了 fgets,但是当我尝试使用 scanf 时,它确实要求输入我想要的内容,但我不知道如何使用带有空格的 scanf 将输入作为字符串。
要了解使用语言内置函数时遇到的问题,您可以随时参考文档以更好地了解发生的情况。
在这里,您尝试了
scanf()
但注意到当输入中有空格时它不起作用。阅读有关此功能的一些文档表明,scanf()
旨在处理格式化字符串,并且其默认行为是在输入space
后立即停止扫描。fgets()
的作用是,如其文档中所示,扫描所有输入,直到输入特殊字符 \n
,所以基本上是读取一行。
格式化字符串是一种告诉计算机它将接收的数据的形状的方法。您可以在 printf()
的
wikipedia 页面上阅读有关其可能性的更多信息,这是另一个使用这些格式化字符串的函数。
现在,具体针对您的问题,您的代码可能并不总是有效,因为
scanf("%d", pointer)
只读取输入中的数字;如果数字后面有 \n
字符,它将保留在输入缓冲区中,并且当调用 fgets()
时,它将获取的第一个字符是 \n
,停止执行。
你可以做的是,在调用
scanf()
之后,等待输入\n
字符,丢弃它,然后继续进行fgets()
调用,如下所示:
while(getchar() != '\n');
getchar() 文档如果您想了解它到底是如何工作的。