我正在做一个项目,在这个项目中,我必须在c中的终端中接受用户的输入,直到他们的输入退出,然后我结束程序。我意识到我做不到:
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv){
char *i;
while(1){
scanf("%s", i);
/*do my program here*/
myMethod(i);
}
}
因此,我的问题是,我该如何接受这些用户输入?我能用循环做吗?我还能做什么?
首先必须为正在读取的字符串分配空间,这通常是用宏大小的char
数组来完成的。char i[BUFFER_SIZE]
然后将数据读取到缓冲区中,fgets
可能比scanf
更好。最后,您检查您的退出案例,strcmp
和"quit"
。
#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE BUFSIZ /* or some other number */
int main(int argc, const char **argv) {
char i[BUFFER_SIZE];
fgets(i, BUFSIZ, stdin);
while (strcmp(i, "quitn") != 0) {
myMethod(i);
fgets(i, BUFSIZ, stdin);
}
}
使用fgets
获得的字符串被配置为空终止
scanf()将返回成功读取的元素数量我将像下面的一样使用它
#include<stdio.h>
#include<string.h>
int main()
{
int a[20];
int i=0;
printf("Keep entering numbers and when you are done press some charactern");
while((scanf("%d",&a[i])) == 1)
{
printf("%dn",a[i]);
i++;
}
printf("User has ended giving inputsn");
return 0;
}
您可以使用do-while循环:
do
{
// prompts the user
}
while (valueGiven != "quit");
using do-while loop.
char *i = null;
char ch = 'a';/
do{
scanf("%s", &i);
/*do my program here*/
myMethod(i);
printf("Do you want to continues.. y/n");
ch = getchar();
}while(ch != 'q');