为什么在这设得是a[3][3],可是我只能输入两个字符

qq_25733443 2018-05-15 05:26:23
#include <stdio.h>
#include <string.h>
void fun(char a[][3])
{
char t[3], i, j;
for (i = 0; i < 2; i++)
for (j = i + 1; j < 3; j++)
if (strcmp(a[i], a[j]) > 0)
{
strcpy(t, a[i]);
strcpy(a[i], a[j]);
strcpy(a[j], t);
}
}
int main()
{
char a[3][3], i;
for (i = 0; i < 3; i++)
scanf("%s", a[i]);
fun(a);
for (i = 0; i < 3; i++)
printf("%s\n", a[i]);
return 0;
}
...全文
372 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-05-15
  • 打赏
  • 举报
回复
a[3][3]是每次输入2个字符,因为输入多余2个字符就会越界。最后一个字符空间用于存储'\0'字符串结束标识。但是可以连续输入3次,一次最多输入2个字符。
赵4老师 2018-05-15
  • 打赏
  • 举报
回复
末尾不是还有一个'\0'吗。

69,371

社区成员

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

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