如果“单词”然后打印一些东西

时间:2013-10-30 19:27:36

标签: c printf scanf

我想创建一个有趣的节目,以便向我的一位朋友展示。不要吝啬,我是初学者,有一点问题。问题是我希望程序扫描一个单词,如果一个单词是我的朋友名字“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;
}

5 个答案:

答案 0 :(得分:3)

试试这样:

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

答案 1 :(得分:2)

您的代码中存在一些错误:

首先,char x;声明一个只能容纳一个字符的变量x。因此,您可能希望声明一个更大的字符数组。

char x[100]; //choose a size

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

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

要使用strcmp,您需要#include <string.h>

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

答案 2 :(得分:1)

if (x == "Bob")

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

Have a look here

答案 3 :(得分:0)

由于这不是作业,您可能想要尝试使用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;
}

答案 4 :(得分:0)

首先,您需要在char x之后放置[256],以便指定字符串的大小。其次,scanf函数scanf(" %c", &x);更改为scanf("%s,x);,因为%s用于读取然后把if (strcmp(x,"Bob")==0)代替if (x == "Bob"),因为这不是检查用户输入的正确方法。同样的事情发生在我身上,继承人if statement not working ends program immediately