0

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

5 回答 5

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;
}
于 2013-10-30T19:30:23.633 回答
2

您的代码中有一些错误:

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

char x[100]; //choose a size

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

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

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

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

于 2013-10-30T19:30:27.920 回答
1
if (x == "Bob")

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

看看这里

于 2013-10-30T19:29:22.687 回答
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;
}
于 2013-10-30T19:55:09.683 回答
0

首先,您需要在之后放置 [256],char x以便指定字符串的大小。其次,将 scanf 函数scanf(" %c", &x);更改为,scanf("%s,x);因为 %s 用于读取字符串。然后最后放置 if (strcmp(x,"Bob")==0)而不是if (x == "Bob")因为这不是检查用户输入的正确方法.同样的事情发生在我身上,如果语句不起作用,则链接立即结束程序

于 2014-02-17T23:21:05.850 回答