求指出哪里错误

竟然有人也叫Webwei 2016-06-08 09:07:15
写一函数,判断一字符串是否回文,回文是指正反序相同,如LeveL #include<stdio.h> #include<string.h> int fun(char *m) { int i=0; i=strlen(m); int k; for (k = 0; k < i; k++) { if( m[k] = m[i- k - 1]) printf("YES"); else printf("NO"); } } main() { char *p; gets(p); fun(p); }
...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-06-08
  • 打赏
  • 举报
回复
解决了的话记得及时结帖
  • 打赏
  • 举报
回复
引用 1 楼 小灸舞的回复:
错误好几个:
1.你应该给p分配空间,否则的话gets会向未知区域写入值
2.m[k] = m[i- k - 1]这里少了一个=
3.你比较的时候,不应该每比较一次就printf一次,而应该等比较结束再printf
4.fun既然不用返回值就改为void,main前面也漏了返回值类型

#include<stdio.h>
#include<string.h>
void fun(char *m)
{
int i=0,flag=0;
i=strlen(m);
int k;
for (k = 0; k < i; k++)
{
if( m[k] != m[i- k - 1])
{
flag = 1;
break;
}
}
if(!flag)
printf("YES\n");
else
printf("NO\n");
}
void main()
{

char p[64] = {0};
gets(p);
fun(p);
}
谢谢指导,我明白了
小灸舞 2016-06-08
  • 打赏
  • 举报
回复
错误好几个:
1.你应该给p分配空间,否则的话gets会向未知区域写入值
2.m[k] = m[i- k - 1]这里少了一个=
3.你比较的时候,不应该每比较一次就printf一次,而应该等比较结束再printf
4.fun既然不用返回值就改为void,main前面也漏了返回值类型

#include<stdio.h>
#include<string.h>
void fun(char *m)
{
int i=0,flag=0;
i=strlen(m);
int k;
for (k = 0; k < i; k++)
{
if( m[k] != m[i- k - 1])
{
flag = 1;
break;
}
}
if(!flag)
printf("YES\n");
else
printf("NO\n");
}
void main()
{

char p[64] = {0};
gets(p);
fun(p);
}

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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