注册 登录
编程论坛 C语言论坛

统计输入单词个数的程序初始定义字符数组的长度是否影响程序执行?

l17538597005 发布于 2019-12-16 20:51, 1230 次点击
#include<stdio.h>
#include<string.h>
int main()
{
   
char str1[3];
int i,c,word=0,num=0;
printf("请输入句子,程序将判断单词数\n");
gets(str1);
 for(i=0;(c=str1[i])!='\0';i++)
 {
    if(c==' ')word=0;
else if(word==0)
{
word=1;
num++;
}
 }
printf("输入单词数为%d",num);





return 0;
}


这个程序开始定义的 char str1[3] 但输入的句子字符长度大于3依旧可以判断单词数量,是不是说明这个初始定义的字符容量不影响程序呢?比如说我输入"i am a boy"字符长度为10,仍能运行
1 回复
#2
纯蓝之刃2019-12-16 22:05
你这个是典型的越界。
gets函数因为这个越界问题已经被废弃了。
你这个样子就像去睡大通铺,你只定了一个铺位,结果你想要占三个位置,如果你旁边的两个铺位没人,那你就占着也没事。如果你旁边的铺位有人,如果那人脾气好,就骂你几句让你占着位置了,他自己的进程报个错,不陪你玩了。如果那人脾气不好打你一顿把铺位掀了,那你们谁都别睡了,电脑直接死机了。
1