【问题标题】:search and compare a string with an array of strings搜索字符串并将字符串与字符串数组进行比较
【发布时间】:2014-01-28 21:37:39
【问题描述】:

这是我的代码

const char *s[5];={"abcd","efgh","ijkl","mnop","qrst"};
char a[4];
while (1)
      {
      scanf("%4s",&a);

      //compare a with s array

      if(/*a exists in s*/)
      printf("it is ok");

      if(/*a does not exist in s*/)
      printf("it is not ok");
}

例如,当我输入“dcba”时,我想看到“它不正常”。当我输入“efgh”时,我想看到“没关系”。

【问题讨论】:

  • scanf 需要 char *%4s,而不是 char(*)[4]。如何进行比较也很重要。
  • 您可以编辑所有内容以达到我的需要。
  • "%4s",需要char a[5];
  • scanf 采用指向变量的指针,int a; 将是 scanf("%d", &i);。但是,由于您的案例中的 char a 指向数组是否开始,所以它在没有引用的情况下使用,scanf("%s", a) 就像那样!
  • bsearch 可以在数组排序后使用。

标签: c string search compare


【解决方案1】:

首先将您的数组a 声明为

char a[5];

使用fgets输入字符串(不要使用scanf),然后使用strcmpstrncmp函数比较两个字符串/(字面量)。

【讨论】:

  • 我忘了说我的编译器是 CodeVision AVR,我只能使用你说的所有 C 函数
  • 你的意思是不允许使用string.h函数?
【解决方案2】:

如果您使用 C++ 和 std::string 类,则可以使用 std::vector<string> 和来自 <algorithm>std::find 并找到您的字符串。

由于您使用的是 C 风格的字符串,请在您的参考书中搜索 strcmp,以便将容器中的项目与 C 风格的字符串变量进行比较。

【讨论】:

    最近更新 更多