1

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

这是代码:

int main()

{
    int c;
    c = getchar();

    while (c != EOF)

    {
        putchar(c);

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

        c = getchar();
    }
}
4

3 回答 3

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 ");
于 2013-01-09T04:53:51.280 回答
1

这个问题有点太困惑了,我无法一次回答,所以让我们从头开始。首先,'nir'(如果它可以编译的话)是一种非常奇怪的方式来编写一个整数,而我认为你的意思"nir"是一串文本。但是,(c == "nir")不编译,不是吗?[这大概就是您尝试(c == 'nir')随机拍摄的原因,不是吗,尽管这在 C 中没有任何意义。]

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

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

于 2013-01-09T04:55:47.083 回答
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);
 }

试试这个代码

于 2013-01-09T06:49:15.723 回答