Dav*_*vey 3 c string character count strchr
我的课堂学期快结束了,我正在做一项作业,根据老师分配的函数原型,编写一个函数来查找字符串中某个字符的编号。我知道我一定在做一些愚蠢的事情,但是这段代码在我的函数中要么锁定要么无限循环。
这是一项任务,所以我不是在寻找任何人为我做作业,而只是指出我错在哪里以及为什么,这样我就可以了解如何解决它。如果您愿意提供任何帮助,我将不胜感激。
这是我写的代码:
#include <stdio.h>
#include <string.h>
int charCounter(char* pString, char c);
int main(void)
{
char* inpString = "Thequickbrownfoxjumpedoverthelazydog.";
int charToCount;
int eCount;
eCount = 0;
charToCount = 'e';
eCount = charCounter(inpString, charToCount);
printf("\nThe letter %c was found %d times.", charToCount, eCount);
return 0;
} // end main
int charCounter(char* pString, char c)
{
int count = 0;
char* pTemp;
do
{
pTemp = strchr(pString, c);
count++;
}
while(pTemp != NULL);
return count;
} // end countCharacter
Run Code Online (Sandbox Code Playgroud)
您的循环总是从 的开头开始pString查找,并且总是一遍又一遍地找到第一个“e”。
如果您声明,char* pTemp = pString;那么您可以稍微不同地进行迭代(我之前粘贴了错误的版本,抱歉!):
char* pTemp = pString;
while(pTemp != NULL)
{
pTemp = strchr(pTemp, c);
if( pTemp ) {
pTemp++;
count++;
}
}
Run Code Online (Sandbox Code Playgroud)
这会强制pTemp在寻找下一个角色之前指向您刚刚找到的角色。
这样做会更容易:
char* pTemp = pString;
while( *pTemp )
if( *pTemp++ == c) count++;
Run Code Online (Sandbox Code Playgroud)
好吧,仔细想想,即使你已经有了这个工作,我还是把内循环改成了我更满意的形式:
while( (pTemp = strchr(pTemp, c)) != NULL) {
count++;
pTemp++;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14392 次 |
| 最近记录: |