如何在C中解决这个输出?

如何在C中解决这个输出?,c,output,C,Output,我必须在一个字符串中搜索一个子字符串&每次找到子字符串时都显示下面给出的完整单词- 例如: 我不知道如何使输出像上面那样 我的输出: excellent,excellently, 最后总是给我一个逗号 程序:描述 迭代地将字典中的每个单词转换为小写, 并将转换后的单词存储在低位。 使用strncmp比较输入字符的第一个len字符和下一个len字符。 如果strncmp的返回值为0,则第一个len字符 这两个字符串的长度相同 void complete(char *input_str) {

我必须在一个字符串中搜索一个子字符串&每次找到子字符串时都显示下面给出的完整单词-

例如:

我不知道如何使输出像上面那样

我的输出:

excellent,excellently,
最后总是给我一个逗号

程序:描述 迭代地将字典中的每个单词转换为小写, 并将转换后的单词存储在低位。 使用strncmp比较输入字符的第一个len字符和下一个len字符。 如果strncmp的返回值为0,则第一个len字符 这两个字符串的长度相同

void complete(char *input_str)
{
    int len = strlen(input_str);
    int i, j, found;
    char lower[30];
    found = 0;

    for(i=0;i<n_words;i++)
    {
        for(j=0;j<strlen(dictionary[i]);j++)
        {
          lower[j] = tolower(dictionary[i][j]);

        }
        lower[j+1]='\0';
        found=strncmp(input_str,lower,len);

        if(found==0)//found the string n print out
        {
           printf("%s",dictionary[i]);
           printf(",");
        }
    }

    if (!found) {
        printf("None.\n");
    } else {
        printf("\n");
    }
}
void complete(字符*input_str)
{
int len=strlen(输入);
int i,j,发现;
煤焦含量较低[30];
发现=0;

对于(i=0;i,我倾向于使用两种方法解决逗号打印问题:

  • 在循环开始时,如果
    i>0
    ,则打印逗号
  • 最后(打印真实值后),如果
    i<(n-1)
    ,则打印逗号

  • 您可以使用其中一种,第一种更简单,因为比较更简单,但它可能会稍微不方便,因为它会及时移动逗号打印(!)。在每次循环迭代中,您都会打印属于上一次迭代的逗号。至少我感觉是这样,但这当然是主观的。

    在打印第二个单词之前,请检查您是否已经打印了一个单词:

    char printed = 0;
    for (i=0; i < n_words; i++)
    {
        for(j = 0; j < strlen(dictionary[i]); j++)
          lower[j] = tolower(dictionary[i][j]);
        lower[j + 1] = '\0';
        found = strncmp(input_str, lower, len);
    
        if (found == 0)//found the string n print out
        {
           if (printed)
             printf(",");
           printf("%s", dictionary[i]);
           printed = 1;
        }
    }
    
    char printed=0;
    for(i=0;i
    char printed = 0;
    for (i=0; i < n_words; i++)
    {
        for(j = 0; j < strlen(dictionary[i]); j++)
          lower[j] = tolower(dictionary[i][j]);
        lower[j + 1] = '\0';
        found = strncmp(input_str, lower, len);
    
        if (found == 0)//found the string n print out
        {
           if (printed)
             printf(",");
           printf("%s", dictionary[i]);
           printed = 1;
        }
    }