使用strcmp搜索相等的字符串

时间:2015-11-11 15:12:56

标签: c arrays string strcmp

我有一个包含相同长度(字典)的真实单词的2D数组。我还有一个2D字符串数组(主要是垃圾,里面有一些真实的单词)。我试图通过使用strcmp在第二个数组中找到真正的单词。一旦找到真正的单词(strcmp = 0),我想将该单词复制到名为actual_words的新2D字符串数组中,然后打印出来。

然而我似乎只是打印Words which are viable:而没有实际的话......但是没有错误。

所有字符串都以空值终止。

void check_dictionary (char equal_length_dictionary[MAX_WORDS][MAX_WORD_LENGTH], char nextword[MAX_WORDS][MAX_WORD_LENGTH])

{
int arr, dict;
char actual_words[MAX_WORDS][MAX_WORD_LENGTH];

printf("\nWords which are viable: \n");

for (dict = 0; equal_length_dictionary[dict][0] != '\0'; dict++)
{
//look through each word in dictionary
    for (arr = 0; nextword[arr][0] != '\0'; arr++) 
    //look through each word in the array
        {
                if ((strcmp(equal_length_dictionary[arr], nextword[arr])) == 0) 
                //test for differences between dictionary and word
                    {
                        strcpy(actual_words[arr], nextword[arr]); 
                        //if no differences, copy words
                        printf("%s ", actual_words[arr]);
                    }
        }
}     
printf("\n");
}

3 个答案:

答案 0 :(得分:0)

您在两个阵列的比较中使用相同的索引:

if ((strcmp(equal_length_dictionary[arr], nextword[arr])) == 0) 

数组equal_length_dictionary应使用索引dict而不是arr

答案 1 :(得分:0)

我猜它是比较;

strcmp(equal_length_dictionary[arr], nextword[arr])

对两个数组使用相同的变量arr。第一个数组应该由dict索引我猜:

strcmp(equal_length_dictionary[dict], nextword[arr])

此外,两个字符串都需要以零终止,否则您将拥有未定义的行为。如果字符串不是零终止,则需要使用strncmp代替(或可能memcmp)。

答案 2 :(得分:0)

如果没有看到被比较的词语,我有一个猜测: 1.您不知道有前导或尾随空格。尝试在print语句中使用分隔符打印出字符串,以便您可以轻松查看是否有任何需要修剪的空格。