【问题标题】:If "word" then prints something如果“word”然后打印一些东西
【发布时间】:2013-10-30 19:27:35
【问题描述】:

我想创建一个有趣的程序来展示给我的一位朋友。不要吝啬,我是初学者,有一点小问题。问题是我希望程序扫描一个单词,如果一个单词是我朋友的名字“Bob”,那么它会打印“noob”,否则它会打印“pro”。

这就是我所做的,但有些东西似乎不起作用。它指出等号 == 有问题。帮助,伙计们。这是我的编码。

#include <stdio.h>

int main()
{
    char x;

    printf("Enter the noob's name: ");
    scanf(" %c", &x);

    if (x == "Bob")
        printf("noob\n");
    else
        printf("pro\n");

    return 0;
}

【问题讨论】:

  • 我认为你必须使用strcmp 来比较两个字符串。
  • x 不是字符串。这是char。请阅读 C 初学者教程。

标签: c printf scanf


【解决方案1】:

试试这样:

#include <stdio.h>
#include <string.h>

int main()
{
    char x[30];

    printf("Enter the noob's name: ");
    scanf(" %s",x);

    if (strcmp(x,"Bob")==0)
        printf("noob\n");
    else
        printf("pro\n");

    return 0;
}

【讨论】:

    【解决方案2】:

    您的代码中有一些错误:

    首先,char x; 声明了一个变量x,它只能容纳一个字符。所以,你可能想要声明一个更大的字符数组。

    char x[100]; //choose a size
    

    其次,C 中不允许与== 进行字符串比较。你应该这样做:

    if(strcmp(x, "Bob") == 0)
    

    要使用strcmp,您需要#include &lt;string.h&gt;

    我还建议使用fgets 来读取C 字符串而不是scanf

    【讨论】:

      【解决方案3】:
      if (x == "Bob")
      

      这不是你在 c 中比较字符串的方式。您需要使用标准库中的strcmp

      Have a look here

      【讨论】:

        【解决方案4】:

        由于这不是家庭作业,您可能想尝试 C++。 例如,下面的代码可能不那么吓人(或不那么吓人):

        #include <iostream>
        #include <string>
        using namespace std;
        
        int main() {
          string name;
          cout << "Please enter your name." << endl;
          cin >> name;
          if (name=="bob") {
            cout << "Hello noob" << endl;
          } else {
            cout << "Hello " << name << endl;
          }
          return 0;
        }
        

        【讨论】:

          【解决方案5】:

          首先你需要把[256]放在char x之后,这样你就可以指定字符串的大小。其次将scanf函数scanf(" %c", &amp;x);更改为scanf("%s,x);因为%s是用来读取字符串的。最后把@ 987654325@ 而不是 if (x == "Bob") 因为那不是检查用户输入的正确方法。同样的事情发生在我身上,这里是链接 if statement not working ends program immediately

          【讨论】:

            猜你喜欢
            • 2015-10-14
            • 1970-01-01
            • 2019-05-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多