我的任務是編寫一個程序來計算另一個字符序列中字符序列出現的次數。 '模式'函數應該返回第二個序列中第一個序列發生的次數而不重複。由於這是一個編程練習,我不允許使用括號來解引用指針,並且只能使用指針算術。陣列中的模式發生
我決定使用if
語句來查看序列是否出現在數組中。我很難看到我的問題在哪裏。我打印出pValue1
以查看指針在陣列中的位置。任何幫助,將不勝感激。
#include <stdio.h>
#include <string.h>
int pattern(char *ptr1, char *ptr2)
{
char *pValue1 = ptr1;
char *pValue2 = ptr2;
int count = 0;
int occurrence = 0;
while (*pValue1 != '\0')
{
if (*pValue1 == *pValue2)
{
if (*pValue1++ == *pValue2++)
{
if (*pValue1 + 2 == *pValue2 + 2)
{
printf("Occurence happens at Location: %d", count);
occurrence++;
}
}
}
count++;
pValue1 = pValue1 + count;
printf("%d", pValue1);
}
/* Print number of occurrences. */
printf("number of occurrences: %i \n", occurrence);
}
void main()
{
char array1[] = "1','1','0','1','0','0','1','1','1','0','1','1','\0'";
char array2[] = "'1','0', '1', '\0'";
pattern(array1, array2);
getchar();
getchar();
}
(我假設這是一個純粹的編程練習,所以我說的「我不允許」,以防止評論中的「誰不讓靜脈的理由提示:'hoge = array1 [i];' - >'{char * p = array1 + i;你會怎樣?「和」你會受到懲罰,如果你這樣做的話「) – usr2564301
提示: hoge = * p;}'另外,我認爲你應該避免使用'void main()'並使用標準的'int main(void)'。 – MikeCAT
注意:'* pValue1!='\ 0''可以更簡潔和慣用地表示爲'* pValue1';在C中,零是假的,非零是真的。 –