gpt4 book ai didi

将等长的字符串复制到新的字符串数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:27 24 4
gpt4 key购买 nike

我有一个存储在二维字符数组中的单词字典。我还有一个存储在结构中的扫描字词。我试图通过将长度等于扫描单词的单词复制到单独的二维数组中来“精简”我的主词典。然后我想打印出新数组。

即如果扫描的单词 = hello,所有相同长度的单词将被复制到新数组中。

我的代码只是无限地打印数组的第一个单词

words.startword是扫描出来的词。

void get_equal_length (char equal_length_dictionary[MAX_WORDS][MAX_WORD_LENGTH], char dictionary[MAX_WORDS][MAX_WORD_LENGTH], Scanned_words words)

{
int i, word_count = 0;

for (i = 0; dictionary[i] != '\0'; i++)
{
if (strlen(*dictionary) == strlen(words.startword))
{
strcpy(*equal_length_dictionary, *dictionary);
word_count++;
printf("Word #%d: %s\n", word_count, *equal_length_dictionary);
}
}
printf("Equal length words: %d\n", word_count);
}

最佳答案

for (i = 0; dictionary[i] != '\0'; i++)
{
if (strlen(dictionary) == strlen(words.startword))
{
strcpy(*equal_length_dictionary, *dictionary);

应该是:

for (i = 0; dictionary[i][0] != '\0'; i++)
{
if (strlen(dictionary[i]) == strlen(words.startword))
{
strcpy(equal_length_dictionary[i], dictionary[i]);

此外,为了提高速度,最好在循环之前只计算一次 strlen(words.startword),而不是在每次迭代时在循环内重新计算它。您也不应该忘记使用空字符串终止新数组。

完整代码如下:

void get_equal_length(char equal_length_dictionary[MAX_WORDS][MAX_WORD_LENGTH], char dictionary[MAX_WORDS][MAX_WORD_LENGTH], Scanned_words words)
{
int i, word_count = 0, len = strlen(words.startword);

for (i = 0; dictionary[i][0] != '\0'; i++)
{
if (strlen(dictionary[i]) == len)
{
strcpy(equal_length_dictionary[i], dictionary[i]);
word_count++;
printf("Word #%d: %s\n", word_count, equal_length_dictionary[i]);
}
}
// now we will also terminate the new array with a null string
equal_length_dictionary[i][0] = '\0';
printf("Equal length words: %d\n", word_count);
}

关于将等长的字符串复制到新的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com