做了一个C语言助教,在给本科生上课之前没有看有关指针的知识,又因为太久没用,导致上课过程中频频出现尴尬。现在总结上课遇到的一个题目:
题目:规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:除了字符串前导和尾部的*号外,将串中其他的*号全部删除。形参h已指向字符串中第一个字母,形参p指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
代码如下:
#include <stdio.h>
#include <conio.h>
void fun( char *a, char *h,char *p )
{
int i=0;
char *k=a;
while (k<h)
{
a[i]=*k;
k++;
i++;
}
while(k<p)
{
if(*k!='*')
{
a[i]=*k;
i++;
}
k++;
}
while (*k)
{
a[i]=*k;
i++;
k++;
}
a[i]='\0';
}
main()
{ char s[81],*t, *f;
int i,j;
printf("Enter a string:\n");
gets(s);
t=f=s;
t=f=s;
while(*t)t++;
t--;
while(*t=='*')t--;
while(*f=='*')f++;
fun(s, f, t);
printf("The string after deleted:\n");
puts(s);
}
将字符串分为三个部分:前导、中间、尾部。