1

これは再投稿であることに注意してください。より理解しやすいように投稿を明確にしました

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;
}

私の仕事は、このデータで特定の文字列を検索することです。

4

1 に答える 1

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); を使っていたので、そう思います。前の行 (バッファ内) からオープン スペース文字を読み込んで検索していました。

ありがとう!

于 2013-10-07T17:26:13.640 に答える