【问题标题】:Searching type char** for a string在类型 char** 中搜索字符串
【发布时间】:2013-10-14 08:09:07
【问题描述】:

请注意,这是一个转发,我已经澄清了我的帖子更容易理解

void searchArray(char ***array, int count){

    char * word = "";


    printf("Enter a word: ");
    fscanf(stdin, " ");
    fscanf(stdin, "%c", &word);
    bool found = false;
    for(int i = 0; i < count; i++){
            if(strcmp(word, (*array)[i]) == 0){
                    found = true;
                    break;
            }
    }
    if(found) printf("%s found!\n", word);
    else if (!found) printf("%s not found!\n", word);
}

在测试中,代码返回“未找到!”每个输入。

以上是我用于搜索和遍历 char ** 类型数组的代码...我不确定我的遍历逻辑是否错误,或者我是否不正确地使用 strcmp...任何帮助将不胜感激!

这是插入代码,它可能有助于澄清我到底想要做什么:

int insertWord(char **array, int *count, char word[])
{
   char *wordPtr;

   wordPtr = (char *)malloc((strlen(word) + 1) * sizeof(char));
   if (wordPtr == NULL)
   {
      fprintf(stderr,"    Malloc of array[%d] failed!\n", *count);
      return -1;
   }
   /* Memory for this word has been allocated, so copy characters
      and insert into array */

   strcpy(wordPtr, word);

   array[*count] = wordPtr;
   (*count)++;

   return 0;
}

我的任务是在这个数据中搜索一个特定的字符串。

【问题讨论】:

  • array 中的字符串是否以 \0 结尾?我认为您的fscanf(stdin, "%c", &amp;word); 不会将\0 放在最后,这可能是原因。
  • 先阅读answer
  • fscanf(stdin, "%c", &amp;something) 只读取 一个字符。你确定不想要char word[80];fscanf (%s%, word); 之类的东西吗?
  • 查看this问题以正确阅读stdin中的单词
  • @hacks 你在我之前的问题上发布了这个。这没有帮助,这是用于实验室并提供了插入代码。我必须用他们给我的东西来实现它。

标签: c arrays string search char


【解决方案1】:
void searchArray(char ***array, int count){

    char word[80];

    printf("Enter a word: ");
    fscanf(stdin, " ");
    fscanf(stdin, "%s", word);
    bool found = false;
    for(int i = 0; i < count; i++){
            if(strcmp(word, (*array)[i]) == 0){
                    found = true;
                    break;
            }
    }
    if(found) printf("%s found!\n", word);
    else if (!found) printf("%s not found!\n", word);
}

此代码完美运行。我认为因为我使用的是 fscanf(stdin, "%c", &word);它正在从上一行(在缓冲区中)读取开放空间字符,然后搜索它……这是这样工作的吗?

谢谢!

【讨论】:

  • @hacks 正如您发布的链接所述:int arr[] 等效于 int * arr,您可以使用两者中的括号来访问元素。
猜你喜欢
  • 2014-03-26
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 2017-02-16
相关资源
最近更新 更多