我正在开发一个项目,我必须从终端中的用户输入c,直到他们输入quit然后我结束程序。我意识到我不能这样做:
#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);
}
}
所以我的问题是如何才能获得这个连续的用户输入?我可以用循环做什么或者我还能做什么?
答案 0 :(得分:2)
首先,您必须为正在读取的字符串分配空间,这通常使用具有宏大小的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, "quit\n") != 0) {
myMethod(i);
fgets(i, BUFSIZ, stdin);
}
}
使用fgets
获得的字符串被gurenteed null终止
答案 1 :(得分:1)
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 character\n");
while((scanf("%d",&a[i])) == 1)
{
printf("%d\n",a[i]);
i++;
}
printf("User has ended giving inputs\n");
return 0;
}
答案 2 :(得分:-1)
您可以使用do while循环:
do
{
// prompts the user
}
while (valueGiven != "quit");
答案 3 :(得分:-1)
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');