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

为什么我不能将我在C中的输入与常规文本进行比较?,c,C,我试图将一个常规文本与我的输入进行比较,如果出现这种情况,我想打印一些东西,如果没有,就继续运行 代码如下: int main() { int c; c = getchar(); while (c != EOF) { putchar(c); if (c == 'nir') { printf ("you typed nir"); } c = getcha

我试图将一个常规文本与我的输入进行比较,如果出现这种情况,我想打印一些东西,如果没有,就继续运行

代码如下:

int main()

{
    int c;
    c = getchar();

    while (c != EOF)

    {
        putchar(c);

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

        c = getchar();
    }
}

您正在尝试将字符串与字符进行比较。尝试获取字符串,而不是使用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 ");

这个问题有点太困惑了,我无法一下子回答,所以让我们从头开始。首先,
'nir'
(如果它可以编译的话)是一种非常奇怪的编写单个整数的方式,而我认为您指的是
“nir”
,一个文本字符串。但是,
(c==“nir”)
不会编译,是吗?[这大概就是为什么您尝试将
(c=='nir')
作为一个随机镜头,不是吗,尽管它在c中没有任何意义。]

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

顺便说一句,不要再输入
'nir'
!这在C中意味着没有任何意义。单引号表示单个字符,如
'n'
,代表字符的整ASCII值

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);
 }

尝试此代码An
int
是一个整数。它不希望与字符串进行适当的比较。这是家庭作业,不是吗。如果是这样的话,他们可能会希望您拥有最后三个字符的数组(或循环缓冲区),并将它们与目标单词“nir”进行比较,或者创建一个自动跟踪“nir”目标单词的机器。如果这不是家庭作业。。。不,我不会想到这个。有人能给我看一个简单的比较吗?