问题 问答题

请编写一个函数,用来删除字符串中的所有空格。
例如:输入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: %s\n",str);

答案

参考答案: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’。

判断题
单项选择题