为什么我不能将我在C中的输入与常规文本进行比较?

时间:2013-01-09 04:39:22

标签: c

我正在尝试将常规文本与我的输入进行比较,如果发生这种特定情况,我想打印一些东西,如果没有,就继续运行。

这是代码:

int main()

{
    int c;
    c = getchar();

    while (c != EOF)

    {
        putchar(c);

        if (c == 'nir')
        {
            printf ("you typed nir");
        }

        c = getchar();
    }
}

3 个答案:

答案 0 :(得分:1)

您正在尝试将字符串与字符进行比较。而不是使用getchar尝试获取字符串。

char str[100], line[500];

1)使用fgets读取一行。

fgets(line,100, stdin)

2)使用sscanf获取字符串。

sscanf(line,"%s", str);

3)使用strcmp比较字符串。

if(strcmp(str,"nir") == 0) 
    printf("You entered nir ");

答案 1 :(得分:1)

这个问题有点让我感到困惑,我不能马上回答这个问题,所以让我们从头开始吧。首先,'nir'(如果它完全编译)是编写单个整数的一种非常奇怪的方式,而我认为你的意思是"nir",一串文本。但是,(c == "nir")无法编译,是吗? [这可能就是你尝试(c == 'nir')作为随机镜头的原因,不是吗,虽然这对C来说没有任何意义。]

在您使用它的上下文中,"nir"地址。现在,您可能还不知道这意味着什么 - 在您获得收益之前也不会几周的C经验。今天你可以使用的是标准库的strcmp()函数,由 string.h提供。我建议你看一下,然后从那里开始。

顺便提一下,不要再次输入'nir'!这在C语言中没有任何意义。单引号用于单个字符,如'n',代表字符的整数ASCII值。

答案 2 :(得分:0)

main()
{
char c;


int i = 0;
do
{
     c = getchar();
     switch(i)
     {
         case 0: 
               if(c == 'n')
               {
                 i++;
               }
                break;
         case 1: 
               if(c == 'i')
               {
                 i++;
               }
               else
               {
                  i = 0; 
                }
                break;
         case 2: 
               if(c == 'r')
               {
                 printf ("you typed nir");
               }
               i = 0; 
               break;
      }
 }while (c != EOF);
 }

试试此代码