问答题 1.  假定输入的字符串只包含字母和“#”号,请编写函数fun(),它的功能是:删除字符串中所有的“#”号。在编写函数时,不得使用C语言提供的字符串函数。
    例如,若字符串中的内容为“##w#el##come###”,删除后,字符串中的内容则应当是“welcome”。
    请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
    试题程序:
    #include<stdio.h>
    #include<conio.h>
    #define strcpy
    void fun(char *s)
    {
    }
    void main()
    {
    char str[81];
    FILE *out;
    printf("Enter a string:\n");
    gets(str);
    fun(str);
    printf("The string after deleted:\n");
    puts(str);
    out=fopen("outfile.dat","w");
    strcpy(str,"###T#ES#T#######");
    fun(str);
    fprintf(out,"%s",str);
    fclose(out);
    }
【正确答案】int i=0;char *p=s;  //工作指针p指向字符串s
   while(*p)    //当p不指向字符串尾符
   {
   if(*p!='#')    //指针p指向的字符不是"#"
   {
   s[i]=*p;    //将p指向的字符复制到字符串s
   i++;    //s下标加1
   }
   p++;    //指针加1,指向下一个字符
   }
   s[i]='\0';    //新串加尾符
【答案解析】 在while循环中,利用if判断表达式中每一个字符是否为“#”,如果不是,将其复制到字符串,否则跳过,这就实现了函数的功能。
   (1)首先利用工作指针指向字符串,当指针不指向串尾时,就对字符串进行循环判断。
   (2)在循环中利用if判断表达式字符是否为“#”,如果不是,将其复制到字符串,否则跳过。
   (3)所有字符处理完后,记得在新串s的末尾加上结束符'\0'。