|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。
输入格式
一行,一个字符串(长度不超过200),句子的头和尾都没有空格。
输出格式
过滤之后的句子。
- #include<stdio.h>
- int main()
- {
- char s[201],c[201]={'\0'};
- int i,j=0;
- gets(s);
- for(i=0;s[i]!='\0';i++){
- if(s[i]!=' ') c[j++]=s[i];
- else{
- c[j++]=' ';
- while(s[i]==' '&&s[i]!='\0') i++;
- c[j++]=s[i];
- }
- }
- printf("%s",c);
- return 0;
- }
复制代码
提交以后为什么显示缓冲区溢出啊,求解
这个问题可能会出现在使用 `gets()` 函数时,因为它不能确保输入的字符数不超过指定范围,这可能导致缓冲区溢出。最好使用 `fgets()` 函数代替 `gets()` 函数:
fgets(s, 201, stdin);
此外,在输出过程中您可能只想打印其中实际包含字符的部分,而不是使用完整的字符数组。可以将字符数组作为参数传递给 printf() 函数,并使用精度值指定要打印的字符数:
printf("%.j字节的数据: %s", count, s);
其中 `count` 是要打印的字节数,`.j` 表示要打印的精度值。
有用请设置最佳答案
|
|