[英]Searching for equal strings using strcmp
我有一个2D数组,其中包含相同长度的实词(字典)。 我也有一个二维的字符串数组(主要是垃圾,里面有一些真实的单词)。 我正在尝试使用strcmp在第二个数组中找到真实的单词。 一旦找到一个真实单词(strcmp = 0),我想将该单词复制到一个新的2D字符串数组中,该数组称为actual_words
然后进行打印。
但是我的似乎只是打印Words which are viable:
没有实际单词……虽然没有错误。
所有字符串均以null结尾。
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");
}
您在两个数组的比较中使用相同的索引:
if ((strcmp(equal_length_dictionary[arr], nextword[arr])) == 0)
数组equal_length_dictionary应该使用索引dict
而不是arr
。
我猜是比较;
strcmp(equal_length_dictionary[arr], nextword[arr])
您对两个数组都使用相同的变量arr
。 第一个数组应该由我猜的dict
索引:
strcmp(equal_length_dictionary[dict], nextword[arr])
另外,两个字符串都必须以零结尾,否则您将有undefined behavior 。 如果字符串不是以零结尾的,则需要使用strncmp
代替(或者可能使用memcmp
)。
没有看到比较的单词,我有一个猜测:1.有些前导或尾随空格您不知道。 尝试在打印语句中用定界符打印出字符串,以便您可以轻松查看是否需要修剪任何空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.