/**
*从一个字符串中去除多余的空格
*函数原型为:void deblank ( char string[]);
*如果发现字符串中有一个地方由一个或多个连续的空格组成,就把它们改成单个空格
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
#define END "Finished!"
void deblank (char string[]);
void read_line (char *p);
int main (void){
char str[MAX_LEN+1];
for(;;){
/**
*逐个读入字符
*/
printf("输入字符串,若输入 Finished!就结束程序\n");
read_line(str);
/**
*判断是否结束程序
*/
if (strcmp(str,END)==0)
break;
printf("清除前:");
puts(str);
/**
*进行清除多余空格的操作
*/
deblank(str);
printf("清除后:");
puts(str);
}
/**
*测试程序是否到达文件结尾
*/
printf("程序到达文件结尾\n");
return 0;
}
void read_line(char *p){
char *q=p;
char ch;
while((ch=getchar())!='\n'){
*q++=ch;
}
*q='\0';
}
void deblank ( char string[]){
char *p=string;
char *q=string;
int same_space=0; //记录相邻的空格
while(*p!='\0'){
/**
*判断是否存在空格
*/
if (*p==' '){
/**
*进行清除多余的空格操作
*/
if(same_space>0){
p++;
continue;
}
same_space++;
}else{
same_space=0;
}
*q++=*p++;
}
*q='\0';
}
转载于:https://my.oschina.net/u/2356112/blog/493748