计算输入的字符串中空格0x20的个数。

发布网友 发布时间:2022-04-23 10:30

我来回答

2个回答

热心网友 时间:2023-10-11 12:26

你定义的char s[]数组长度是10,超过十属于下标越界,当然会出错啦
strlen(s)属于动态获取字符长度,比如你输入5个字符,那么strlen(s)就等于5

热心网友 时间:2023-10-11 12:26

你的字符数组溢出了,所以报错,或者即使不报错,也会数据异常。永远不要使用 gets()。该函数从标准输入读入用户输入的一行文本,它在遇到 EOF 字符或换行字符之前,不会停止读入文本。也就是:gets() 根本不执行边界检查。因此,使用 gets() 总是有可能使任何缓冲区溢出。作为一个替代方法,可以使用方法 fgets()。

给你修改了一下代码,你看看,这样输入很多字符只读取前10个字符,当然你可以把常量BUFSIZE调大点。。。

#define BUFSIZE 10
int main(void)
{
int i, icounter = 0;

char s[BUFSIZE];

puts("enter a string:");
// gets(s);
fgets(s, BUFSIZE, stdin);

for(i = 0; i < BUFSIZE; ++ i)
if(s[i] == 0x20)
++ icounter;

printf("blanks: %d\n", icounter);

return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com