请编写一个函数 用来删除字符串中的所有空格。 例如:输入asd af aa z67 则输出为
问题详情
请编写一个函数,用来删除字符串中的所有空格。
例如:输入asd af aa z67,则输出为asdafaz67。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<stdio.h>
include<ctype.h>
include<conio.h>
int fun(char*str)
{
}
main()
{
char str[81];
int n;
clrscr();
printf("Input a string:");
gets(str);
puts(str);
fun(str);
printf("*** Str: %sn",str);
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:int fun(char *str){int ij=0;for(i=0;str[i]!='\0'; i++)if(str[i]!='') /*将字符串中的空格删去*/str[j++]=str[i]; /*注意该程序中空格字符的表达方法*/str[j]='\0'; /*在字符串最后加上结束标记符*/}
int fun(char *str){int i,j=0;for(i=0;str[i]!='\0'; i++)if(str[i]!='') /*将字符串中的空格删去*/str[j++]=str[i]; /*注意该程序中空格字符的表达方法*/str[j]='\0'; /*在字符串最后加上结束标记符*/} 解析:前面我们接触到的题是删除字符,但本题要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于 C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用“留下”字符的算法,以前的题目亦是如此。用 str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\0'。