我有一个包含相同长度(字典)的真实单词的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");
}
答案 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语句中使用分隔符打印出字符串,以便您可以轻松查看是否有任何需要修剪的空格。