我正在尝试使用搜索功能计算字符串中每个字符的数量,并在每次出现时添加。
到目前为止,这是我的程序
#include<stdio.h>
int countCharactersCaseSensitive(char *inStr, char);
int main()
{
char ascii[52];
int capital = 65;
int i;
for (i = 0; i <26; i++)
{
ascii[i] = capital;
capital++;
}
int lower = 97;
for (i=26; i< 52; i++)
{
ascii[i] = lower;
lower++;
}
char *str = "Programming Assignment";
int count[52];
for (i=0;i<52;i++)
{
char check = ascii[i];
count[i] = countCharactersCaseSensitive(str,check);
}
for(i=0;i<52;i++)
{
printf("%c%10d\n",ascii[i],count[i]);
}
}
int countCharactersCaseSensitive(char *inStr, char check)
{
int i;
int count = 0;
int length = strlen(inStr);
for (i=0;i<length;i++)
{
if(check == *inStr)
{
inStr++;
count++;
}
}
return count;
}
但它只检查P,我如何修复此问题以检查字符串中的其他字符?
答案 0 :(得分:3)
for (i=0;i<length;i++)
{
if(check == *inStr)
{
inStr++;
count++;
}
}
您只有在找到支票字符时才会提前输入。你需要每次迭代都要推进它。
for (i = 0; i < length; i++, inStr++)
{
if (check == *inStr)
{
count++;
}
}
答案 1 :(得分:0)
因为这个
if(check == *inStr)
{
inStr++;
count++;
}
只有在指针匹配时才递增指针,并且由于第一个char是P
而且只有一次出现,P
你需要在if语句之外增加。
要么
if(check == *inStr)
{
count++;
}
inStr++;
或
if(check == inStr[i])
{
count++;
}
答案 2 :(得分:0)
你实际上并没有通过你想要搜索的字符串前进。 我建议这两个变化之一:
int length = strlen(inStr);
for (i=0;i<length;i++)
{
if(check == inStr[i])
{
count++;
}
}
或
char * strPtr;
for (strPtr = inStr; *strPtr; strPtr++)
{
if(check == *strPtr)
{
count++;
}
}