您的位置:首页 > 编程语言 > C语言/C++

<C语言>消除字符串中的空格--附:消除fgets()函数吃进去的回车符

2017-08-21 20:55 465 查看
作者:wsg

时间:2017年8月21日

/*
去掉字符串中的空格
版本一
*/
#include <stdio.h>
#include <string.h>

void strip(char *s)
{
int i,j;
for(i=0; s[i]; i++) //i<strlen(s)
{
if(s[i] == ' ')
{
for(j=i; s[j]; j++) //j<strlen(s)
{
s[j] = s[j+1];
}
i--;
}
}
}

int main(void)
{
char arr[200];
bzero(arr, 200);
printf("input:");
fgets(arr, 200, stdin);
strip(arr);
printf("%s", arr); //%s后面没有\n换行符,但是程序运行的时候会换行,说明fgets吃掉了回车符
}


//消除字符串中的空格--消除fgets函数吃掉的回车
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
char arr[200]; //定义一个200个元素的char型数组

bzero(arr, 200); //将arr的前200个字节置零
//从键盘输入字符串,不能用scanf,因为scanf输入的字符串不能有空格
printf("输入:");
fgets(arr, 200, stdin); //缺点:fgets会吃掉回车,将回车算作一个字符
//若用gets函数,不会吃进去回车,但是编译时会有警告

char new[200];
bzero(new, 200);

strncpy(new, arr, strlen(arr)-1); //消除吃掉的回车:将长度减1,即把末尾的回车字符去掉了

int s = strlen(new);
int i,j;
for(i=0; i<s; i++)
{
if(new[i] == ' '
) //如果字符串中有空格符,就把后面的字符一次往前移一位
{
for(j=i; j<s; j++)
{
new[j] = new[j+1];
}
i--;
}
}
printf("去掉空格后:%s", new);

return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐