学校的一个习题,我自己验证无误,但过不了学校的考试系统。
题目如下:
假定输入的字符串中只包含字母和号。请编写函数fun,它的功能是: 除了字符串前导和尾部的号之外, 将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
在编写函数时,不得使用C语言提供的字符串函数。
注意: 部分源程序在文件PROG1.C文件中。
主函数可任意改动,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <conio.h>
void fun( char *a, char *h,char *p )
{
//--ksstart(注释不能删除)—
//考生代码从此开始编写
int i=0,j;
while(h[i]!=p[0]){
if(h[i]=='*'){
//当数组中间出现*时,删除后要产生如下三种变化
j=i;
p--;
//一·数据末尾指针p向前移动一位
while(h[j]!='\0'){
h[j]=h[j+1];
//二·所有数据向前移动一位
j++;
}
}
else{
i++;
//三·控制操作的循环数i需要不变
//即只有h[i]!='*'时,i才正常进位
}
}
//--ksend---
}
int main()
{
//自己编写main()
char a[]={"***a*bc***d*ef****"};
char *h,*p;
h = &a[3];
p = &a[13];
fun(a,h,p);
printf("%s",a);
return 0;
}