【问题标题】:C :How to compare two strings and find a word i need?C:如何比较两个字符串并找到我需要的单词?
【发布时间】:2014-10-31 20:06:27
【问题描述】:

它不完整,但没有打印任何东西

char *fruit[] = {"rasberry", "cherry"};
char *veg[] = {"salad", "tomato"};
char word;


printf("Print a veg or a fruit \n");
scanf("%s", &word);


for (int i = 0; i < strcmp(fruit, veg ); i++)
{
    if (word == fruit[i])
        printf("Its fruit!");
}

如何比较?

【问题讨论】:

  • 您希望strcmp(fruit, veg) 做什么?你的意思是改用i &lt; 2(2 因为fruit 中有2 个元素)?
  • 我希望它找到用户写的单词。我试过做我
  • @ViktorijaKočerha:你到底想要什么?检查下面我发布的内容以检查用户是否输入了水果。您可以应用相同的逻辑来检查用户是否输入了蔬菜。
  • 不,我希望它打印它是什么。水果或蔬菜
  • 这一行:char *fruit[] = {"rasberry", "cherry"};定义了两个元素 char *fruit[],以及两个文字字符串 rasberry 和 cherry。所以要引用樱桃,将是 *fruit[1] 水果和蔬菜引用都需要遵循相同的代码模式

标签: c loops compare strcmp


【解决方案1】:

确定需要什么后,请尝试以下操作:

    char *fruit[] = {"rasberry", "cherry"};
    char *veg[] = {"salad", "tomato"};
    char word[100]={0};


    printf("Print a veg or a fruit \n");
    scanf("%s", word);

    // Check fruit
    for (int i = 0; i < 2; i++)
    {
        if (strcmp(word,fruit[i])==0)
        {
            printf("Its fruit \n");
        }
    }
    // Check veg
    for (int i = 0; i < 2; i++)
    {
        if (strcmp(word,veg[i])==0)
        {
            printf("Its veg \n");
        }
    }

【讨论】:

  • 你为什么要做这个char word[100]
  • @ViktorijaKočerha:因为 char 仅用于存储一个字符。你试过这个吗,它在我身边有效。更多信息:cprogramming.com/tutorial/c/lesson9.html
  • @ViktorijaKočerha:scanf 需要存储输入的变量地址——这就是你使用 & 的原因。但是在数组的情况下,数组的名称可以像指针一样,它是第一个元素的地址。见这里:stackoverflow.com/questions/1641957/…。您可以阅读更多关于 c 基础知识的内容
猜你喜欢
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多