c - 字符串中相等标记之间的符号

标签 c arrays string

我编写了一个程序,可以在句子中找到相同的单词。 我需要编写程序来计算相等标记之间有多少符号。

我知道如果相等的字符串是单词[2]和单词[5],那么它们之间的长度将是 strlen(单词[3])+strlen(单词[4])

我的代码:

for (k=0; k<i-1; k++)
{
 for (j=k+1; j<i; j++)
  { 
             if (strcmp(words[k],words[j])==0) 
             {
             printf("equal words are [%s],%d,%d",words[k],k,j);



             break;
             }

但是如果我的话就像这样

     words[k] and words[j]

那我怎么知道它们之间的长度呢?

最佳答案

天真的答案是在获得匹配项后添加另一个 for 循环:

for (k=0; k<i-1; k++)
{
    for (j=k+1; j<i; j++)
    { 
         if (strcmp(words[k],words[j])==0) 
         {
             int distance = 0;
             for (n=k+1; n < j; n++)
             {
                  distance += strlen(words[n]);
             }

             printf("equal words are [%s],%d,%d,(distance = %d)",words[k],k,j,distance);
             break;
         }
    }  
}

但是,您还可以跟踪当前匹配扫描的长度并避免另一个循环:

for (k=0; k<i-1; k++)
{
    int distance = 0;

    for (j=k+1; j<i; j++)
    { 
         if (strcmp(words[k],words[j])==0) 
         {
             printf("equal words are [%s],%d,%d,(distance = %d)",words[k],k,j,distance);
             break;
         }

         distance += strlen(words[j]);
    }  
}

关于c - 字符串中相等标记之间的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19667991/

相关文章:

c++ - 减少将参数传递给函数所需的字符串流操作的冗长程度

java - Setter 和 getter 不工作

C 自动变量和内存地址

JavaScript 数组和作用域

C# 递归步骤方法

javascript - JS检查对象数组是否包含对象

python - 在 python 中,如果文件以一组特定的字母开头,我如何从循环中排除文件?

c - 关于linux函数栈初始化的问题

仅给出后序构造完整二叉树?

c - C 中的子串