将指定字符串中的*去掉,如果字符串头有*,要保留,有几个保留几个;
例:源字符串为****abAb*CDEF*ff*****,输出为:****abAbCDEFff。
该题考查:
1、字符串指针的遍历方法;
字符串以'\0'结尾,是判断字符串结束的标识
方法一:
*p == '\0'时,while循环结束
while(*p){
p++
}
方法二:
*p == '\0'时,for循环结束
for(;*p != '\0'; p++){
}
2、从字符串中删除某一字符的方法;
遍历字符串,将字符串中指定字符的字符删除,这里以*为例
while(*p){ //开始遍历
if(*p != '*'){
data[i] = *p; //保留不是*的数据
i++;
}
p++; //这里注意,不管是不是*,p的地址都要增加,以完成遍历
}
3、gets的应用。
获取输入的数据,以回车为结束
示例代码如下:
#include <stdio.h>
#define DEL_CHAR '*'
static void del_char(char *data)
{
int i = 0;
char *p = data;
while(*p && *p == DEL_CHAR){ //遍历字符串,当*p!='\0'或者*p='*'时,停止遍历
//目的是将字符串最前面的**全部保留下来
data[i] = *p; //将字符串最前面的*保留
i++;
p++;
}
while(*p){ //从第一个不是*的字符串开始遍历,当*p!='\0'时,停止遍历
if(*p != DEL_CHAR){
data[i] = *p; //将不是*的数据保留
i++;
}
p++; //这里注意,不管是不是*,p的地址都要增加,以完成遍历
}
data[i] = '\0'; //在字符串末尾加入'\0'
}
void main(void)
{
char s[100];
printf("请输入一串字符串:\r\n");
gets(s);
del_char(s);
printf("整理后的字符串为:%s\r\n",s);
}