【发布时间】:2015-11-11 15:12:56
【问题描述】:
我有一个包含相同长度的真实单词(字典)的二维数组。我还有一个二维字符串数组(主要是垃圾,里面有一些真实的单词)。我试图通过使用 strcmp 在第二个数组中找到真正的单词。一旦找到一个真实的单词(strcmp = 0),我想将该单词复制到一个名为actual_words 的新二维字符串数组中,然后打印它。
但是我的似乎只打印了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");
}
【问题讨论】:
-
数组中的单词是否以空值结尾? (如果没有,你应该使用
strncmp和strncpy) -
@Finlandia_C 请注意
strncpy,因为它可能并不总是零终止字符串。 -
如果列表很大,对两个列表进行排序然后通过两个列表查找匹配项会更快。