C语言问题,大神来帮帮忙。

z_1x_2c_3 2014-12-14 10:03:39


for循环输入aaaaa 结果是5 窗口会一闪而过

第二种 输入aaaaa结果是5 但会出现错误界面:Run-Time Check Failure #2 - Stack around the variable 'ch' was corrupted.
但输入aaaas 结果是4 窗口会一闪而过

第三种 什么问题都没有

...全文
219 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xionggch 2014-12-15
  • 打赏
  • 举报
回复
在数组定义不够大的时候用scanf("%s",ch);和gets(ch);字符串输入都比较容易越界;用第一种比较合适 屏幕闪下,可以参考2楼的
RbnTs 2014-12-15
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
char ch[6];
int a = 0, i = 0;
int num = 0;
printf("请输入:\n");

/* for(i=0; i<5; i++)
{
scanf("%c",&ch[i]);
}*/
// scanf("%s", ch);
//gets(ch);
for ( i=0; i<5; i++)
if ((ch[i]=getchar()) == 'a')
num++;
printf("%d\n请输入 0 以结束程序:\n", num);
while(getchar()!='0');
}
z_1x_2c_3 2014-12-14
  • 打赏
  • 举报
回复
引用 5 楼 Evankaka 的回复:
[quote=引用 3 楼 tenmenglin 的回复:] [quote=引用 1 楼 Evankaka 的回复:] Run-Time Check Failure #2 - Stack around the variable 'ch' was corrupted.。。。提示你数组越界了,因为你char ch[5];只有5个字符的空间,当你不用for循环输入时,就一句scanf("%s",ch);你键入aaaaa。程序会自动在后面在个字符串结束符‘/0’。所有有6个字符,你改成char ch[6]试试
我有另一种理解 就是当回车时也是一个字符 这个理解对不对?[/quote] 对的。因为回车也有自己的字符,只不过你输入回车,它就认为你输入完成,在你的字符串后面添加字符串结束符[/quote] 还有 那个gets()为什么不出问题 但我如果 把后免得getchar() 删了 就会出现上面的错误
Evankaka 2014-12-14
  • 打赏
  • 举报
回复
引用 3 楼 tenmenglin 的回复:
[quote=引用 1 楼 Evankaka 的回复:] Run-Time Check Failure #2 - Stack around the variable 'ch' was corrupted.。。。提示你数组越界了,因为你char ch[5];只有5个字符的空间,当你不用for循环输入时,就一句scanf("%s",ch);你键入aaaaa。程序会自动在后面在个字符串结束符‘/0’。所有有6个字符,你改成char ch[6]试试
我有另一种理解 就是当回车时也是一个字符 这个理解对不对?[/quote] 对的。因为回车也有自己的字符,只不过你输入回车,它就认为你输入完成,在你的字符串后面添加字符串结束符
z_1x_2c_3 2014-12-14
  • 打赏
  • 举报
回复
引用 2 楼 robinbz 的回复:
推荐你用stdlib.h里面的system("pause")来实现暂停窗口
暂停了 O(∩_∩)O谢谢。
z_1x_2c_3 2014-12-14
  • 打赏
  • 举报
回复
引用 1 楼 Evankaka 的回复:
Run-Time Check Failure #2 - Stack around the variable 'ch' was corrupted.。。。提示你数组越界了,因为你char ch[5];只有5个字符的空间,当你不用for循环输入时,就一句scanf("%s",ch);你键入aaaaa。程序会自动在后面在个字符串结束符‘/0’。所有有6个字符,你改成char ch[6]试试
我有另一种理解 就是当回车时也是一个字符 这个理解对不对?
RbnTs 2014-12-14
  • 打赏
  • 举报
回复
推荐你用stdlib.h里面的system("pause")来实现暂停窗口
Evankaka 2014-12-14
  • 打赏
  • 举报
回复
Run-Time Check Failure #2 - Stack around the variable 'ch' was corrupted.。。。提示你数组越界了,因为你char ch[5];只有5个字符的空间,当你不用for循环输入时,就一句scanf("%s",ch);你键入aaaaa。程序会自动在后面在个字符串结束符‘/0’。所有有6个字符,你改成char ch[6]试试

69,371

社区成员

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

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