C代码,求找错

「已注销」 2016-04-06 03:06:06
找到其它方法了,但是这段代码还是不知道哪里错了
cb在输入第三个字符串的时候显示错误
#include"stdio.h"
#include"string.h"
int M,K;
void fun(char (*a)[10])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<K;j++)
{
puts(a[i][j]);
}
printf("/n");
}
}
int main()
{
int i;
char a[5][10];
scanf("%d",&M);
scanf("%d",&K);
for(i=0;i<M;i++)
gets(a[i]);
fun(a[5][10]);
}
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
拾薪 2016-04-06
  • 打赏
  • 举报
回复
传参 fun(a[5][10]),这个直接就写了个越界的东西,直接用a传二级地址就行了
旧剑鞘 2016-04-06
  • 打赏
  • 举报
回复
fun(a[5][10]);调用错误,应该是fun(a); puts(a[i][j]); 调用错误,如果想一个字符一个字符打印是putchar(a[i][j]); M,K依赖用户输入,一旦输入大于5,10,访问内存越界;就算输入正确,后边输入的字符串长度过长会得到想不到的结果,刚开始试试可以,真正编程不能这么来的; printf("\n"), 不是/n ~~~~
赵4老师 2016-04-06
  • 打赏
  • 举报
回复
请那些喜欢将数组作为函数参数传来传去的码农思考一下为什么不把整个互联网内容当作函数参数传来传去呢?
小灸舞 版主 2016-04-06
  • 打赏
  • 举报
回复
错误已经注释在代码里了

#include"stdio.h"
#include"string.h"
int M,K;
void fun(char (*a)[10])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<K;j++)
{
putchar(a[i][j]); //这里应该是putchar
}
printf("\n"); //应该是\n不是/n
}
}
int main()
{
int i;
char a[5][10];
scanf("%d",&M);
scanf("%d",&K);
fflush(stdin); //这里要清空输入缓冲区
for(i=0;i<M;i++)
gets(a[i]);
fun(a); //传参不对,应该传a
}

69,375

社区成员

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

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