指针咋哪哪不对劲

拿云️ 2019-04-21 11:24:03
计算字符串中字符ch的个数, if(*p=='c'&&*(p+1)=='h')
这是我写的 if(*p=='ch')这是书上写的,这句话是什么意思呢 各位前辈能指教一下吗 #include <stdio.h>
int *count( char *p );
int main()
{
char p[10]="abch";
printf("'ch'有%d个\n",*(count(p)));
}

int *count( char *p)
{

int cnt=0;
int i=0;
while(*(p+i))
{
if(*p=='c'&&*(p+1)=='h')
cnt++;
i++;
}

return &cnt;
}
int *count2( char *p)
{

int cnt=0;
int i=0;
while(*(p+i))
{
if(*p=='ch')
cnt++;
i++;
}

return &cnt;
} 还有一个问题 while( (*(to++) = *(from++) )!= '\0') 这句话是表明*(from++)不等于0时退出还是*(to++) 多谢了
...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_43659968 2019-05-21
  • 打赏
  • 举报
回复
这书哪里卖的,你可以把它丢了。根本就是不懂C语言的人写的书。
赵4老师 2019-05-21
  • 打赏
  • 举报
回复
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633
拿云️ 2019-04-26
  • 打赏
  • 举报
回复
引用 7 楼 636f6c696e的回复:
都告诉你了ch不是字符,就没有'ch'这种写法,“ch”表示字符串,如果要找字符串,string库有现成的接口
引用 5 楼 涤 的回复:
那我偏要找'ch'这么写呢
我没有说要'ch'这样写啊
636f6c696e 2019-04-26
  • 打赏
  • 举报
回复
都告诉你了ch不是字符,就没有'ch'这种写法,“ch”表示字符串,如果要找字符串,string库有现成的接口
引用 5 楼 涤 的回复:
那我偏要找'ch'这么写呢
  • 打赏
  • 举报
回复
主要问题:
1、把函数的局部变量作为引用返回,显然不对。可以返回静态的引用
2、比较运算里没有i参与,始终比较的是前两个。
3、一些下标泄露的小问题,比如要判断 i+1是不是0,而不是i,因为你判断2个字符
原始修改:

#include <stdio.h>
#include <string.h>
int * count( char *p );
int * count2( char *p );
int main()
{
char p[]="abch2384784chch1cchh22";
printf("'ch' %d \n",*(count(p)));
printf("'ch' %d \n",*(count2(p)));
}


int *count( char *p)
{
static int cnt=0;
int i=0;
while(*(p+i+1))
{
if(*(p+i)=='c'&&*(p+i+1)=='h')
cnt++;
i++;
}

return &cnt;
}


int *count2( char *p)
{
static int cnt=0;
int i=0;
while(*(p+i))
{
if(strncmp(p+i,"ch",2)==0)
cnt++;
i++;
}

return &cnt;
}



简化:

#include <stdio.h>
int count( const char *p );
int main()
{
const char p[]="abch2384784chch1cchh22";
printf("'ch' %d \n",count(p));
}

int count( const char *p)
{
int cnt=0;
while(*(p+1))
{
if(*p=='c' && *(p+1)=='h')
++cnt;
++p;
}
return cnt;
}

拿云️ 2019-04-25
  • 打赏
  • 举报
回复
那我偏要找'ch'这么写呢
自信男孩 2019-04-22
  • 打赏
  • 举报
回复
'ch'不是字符,*p = 'ch'; 书上不应该出现这个低级错误吧
636f6c696e 2019-04-22
  • 打赏
  • 举报
回复
哥,ch特指一个字符,是函数的入参,而不是'ch'两个字符,
拿云️ 2019-04-21
  • 打赏
  • 举报
回复
并且理解错了意思
拿云️ 2019-04-21
  • 打赏
  • 举报
回复
哇,这个程序不对,刚试了其他数据

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧