简单的C ++程序来计算子字符串的实例数

时间:2015-12-24 19:25:20

标签: c++ string

有人可以指出以下代码中的错误。我正在使用一种天真的方法,通过charcter比较两个字符串字符并更新变量'u'然后将其与子字符串的长度进行比较。如果这是真的,那么变量'c'将由一个单位更新。

C ++程序:

#include<iostream>
#include<conio.h>
#include<string.h>

using namespace std;

int main()
{
char s[50],a[20];
cin.getline(s,50);
cin.getline(a,20);
//int l=strlen(s);
int p=strlen(a);
int i,c=0,j,u=0,k;
for(i=0;s[i]!='\0';i++)
{
       if(a[i]='\0')

       {break;} 

       if(s[i]==a[0])
         {
            for(j=i,k=0;a[k]!='\0';j++,k++)
                {
                  if(s[j]==a[k])
                    {
                      u++;
                      //continue;
                    }
                    //else
                    //break;
                 }
                   //cout<<endl<<u;                                                                          
           if(u==p)
             {
              c++;
             }
         }

     u=0;

   }
   cout<<endl<<"count "<<c;
   getch();
}

对于任何类型的输入组合,我输出为0。

2 个答案:

答案 0 :(得分:2)

问题出在这一部分:

if (a[i] = '\0')

{
  break;
}

首先,您使用的是=而不是==,但这不是整个问题。将a[i]更改为s[i],或将整个块注释掉。我不明白为什么需要它。

答案 1 :(得分:1)

我的提示和我的编码约定,以避免您使用=代替==的错误:

if(a[i]='\0')

将rvalue放在操作数的左侧,将左值放在右侧,如下所示:

if ('\0' == a[i])

此约定将避免类似的错误(您将收到编译错误):

if ('\0' = a[i])

此代码将生成编译错误:

Error   C2106   '=': left operand must be l-value