c - 将字符串与字符串数组进行比较的问题 C

标签 c string pointers

我快要中风了,我不明白为什么这段代码不起作用。目标是在字符串数组中搜索字符串。如果找到要搜索的字符串,则该方法返回 true,否则返回 false。不幸的是,我犯了某种错误,并且即将中风,因为我无法弄清楚它是什么。 printf 只是为了表明正在迭代数组,非常感谢您的帮助。另外,for循环中的-1只是一个有用的东西,我认为它不应该存在,但是当你把它拿出来的时候看看会发生什么。另外,我想指出,由于我目前正在学习的部分,我声明数组的方式是我需要的方式。

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

bool seachForString(char *firstString, int numberOfStrings, char *searchingFor);

int main(void){

  bool found;
  char *search = "Earth";

  char *planets[] = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};
  found = seachForString(planets[0], 9, search);

  printf("Found: %d\n", found);

  return 0;
}

bool seachForString(char *firstString, int numberOfStrings, char *searchingFor){
  char *stringInList = firstString;

  for(int i=0; i<numberOfStrings-1; i++){
    printf("%s\n", stringInList);
    if(strcmp(stringInList, searchingFor) == 0){
      return true;

    }else{
      while(*(stringInList++) != '\0');

    }

  }

  return false;
}

最佳答案

如果你设置char *search = "Earth";char *planets[] = {...}; 之后, 它可能会起作用。
例如

char *planets[] = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};
char *search = "Earth";

但是,字符串文字的放置并不总是您想要的。没有这样的保证。

所以改成传数组。

像这样:

bool seachForString(char *firstString[], int numberOfStrings, char *searchingFor);

int main(void){

  bool found;
  char *search = "Earth";

  char *planets[] = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};
  found = seachForString(planets, 9, search);

  printf("Found: %d\n", found);

  return 0;
}

bool seachForString(char *firstString[], int numberOfStrings, char *searchingFor){
  char **stringInList = firstString;

  for(int i=0; i<numberOfStrings; i++){
    printf("%s\n", *stringInList);
    if(strcmp(*stringInList++, searchingFor) == 0)
      return true;
  }

  return false;
}

关于c - 将字符串与字符串数组进行比较的问题 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922151/

相关文章:

c - 尝试正则表达式,简单的例子是行不通的

javascript - 如何在 Node.JS 中使用这个函数?

javascript - 将字符串转换为具有多个条目的单个数组

java - 从我的文件中删除空行

c++ - C++:旧的C风格的字符串数组存在问题(如Char **)

c - 交换单链表中的两个节点

C 释放动态分配的结构数组

使用不同参数调用函数会产生相同的输出。 (C)

php - 组织编程竞赛 - 如何编译和执行

c - 什么时候在 C 中未定义指针减法?