【问题标题】:How to compare multiple strings in C [duplicate]如何在C中比较多个字符串[重复]
【发布时间】:2015-11-29 01:25:04
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun1(void);
void func1()
{
  printf("Function1 executed \n");
}
int main()
{
  char syscom[256];
  char check[] = "cmd";
  do 
  {
    printf("Enter function : ");
    fflush (stdout);
    scanf("%255s",syscom);
    int numb;
    numb = strcmp("funct1",syscom);
    printf("%d\n",numb);
    if (numb == 1)
    {
      func1();
    }
  }while(strcmp("quit",syscom) != 0);
  return 0;
}

由于某种原因,strcmp 在 do-while 循环中运行良好,但在实际循环中,您可以选择它始终返回 1 的函数。例如在 Enter 函数部分,即使输入随机字符串,它也会像我想要的那样生成 1 而不是 0。我知道 c++ 会让这个程序变得轻而易举,但我想在 c 上使用它。

所以我把标题设置为多个字符串,因为程序将有多个函数,这些不包括在内,因为我不知道如何在多个函数上使用 strcmp。

【问题讨论】:

  • numb = strcmp("funct1", syscom) 如果匹配则将numb 设置为0,如果您输入的字符串按字母顺序排列在"funct1" 之后,则设置1,如果在之前则设置-1。
  • 根据您的描述,您需要if (numb == 0),而不是if (numb == 1)。如果字符串匹配,strcmp() 返回 0

标签: c arrays compare string-comparison strcmp


【解决方案1】:

改变这个:

numb = strcmp("funct1",syscom);
printf("%d\n",numb);
if (numb == 1) {
  func1();
}

到这里:

numb = strcmp("funct1",syscom);
printf("%d\n",numb);
if (numb == 0) {
  func1();
}

下次您发布问题时,请先查看ref

返回一个整数值,表示字符串之间的关系: 返回值表示:

  1. 0 两个字符串的内容相等
  2. >0 第一个不匹配的字符在ptr1中的值大于在ptr2中的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2013-01-24
    相关资源
    最近更新 更多