在C中从用户那里获取连续输入

时间:2014-11-06 03:46:58

标签: c input terminal user-input

我正在开发一个项目,我必须从终端中的用户输入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);

    }

}

所以我的问题是如何才能获得这个连续的用户输入?我可以用循环做什么或者我还能做什么?

4 个答案:

答案 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');