有人可以指出下面的代碼中的錯誤。我使用了一種比較兩個字符串字符charcter和更新變量'u',然後將其與子字符串的長度進行比較的幼稚方法。如果這是真的,那麼變量'c'被更新一個單位。簡單的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
你需要嘗試更多的縮小問題。使用調試器進行調試,或者讓程序在工作時輸出打印結果,以便更好地瞭解其內部工作原理。 –
我推薦使用'std :: string',因爲它更安全,更具可讀性。 'std :: string'會動態增長,你不必檢查溢出字符數組或維護那個討厭的終止'\ 0'字符。 –
@ThomasMatthews - 同樣,'std :: string'提供了'std :: string :: find',它將完成90%的工作。 –