Обратите внимание, что это является REPOST, я разъяснил свой пост, чтобы быть более понятнымSearching символьного типа ** для струнного
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;
}
Моя задача поиска определенной строки в этих данных.
Строки из 'массива', заканчивающиеся на' \ 0'? Я думаю, что ваш 'fscanf (stdin,"% c ", &word);' не будет положить '\ 0' в конце, и это может быть причиной. –
Прочтите этот [ответ] (http://stackoverflow.com/a/17506236/2455888) – haccks
'fscanf (stdin,"% c ", & something)' только читает * ОДИН ХАРАКТЕР *. Вы уверены, что не хотите что-то вроде 'char word [80]:' и 'fscanf (% s%, word); '? – paulsm4