求教 去除字符串后面的“*”(不能用到strlen strcpy strcat等函数)
比如 *k*k*
处理后变为 *k*k
#include<conio.h>
#include<stdio.h>
void fun( char a[])
{
char *p=a ;
while(*p!='\0')
{
++p ;
}
--p ;
while(*p--=='*' )
{
*p='\0' ;
*a--=*p ;}
}
main()
{
clrscr();
printf("input string:");
gets(a);
fun(a);
puts(a);
}
我自己编的~~ 不知道哪错了
大侠门帮我改改把~
main函数是给定的
子函数 形式为 void fun( char a[])
问题点数:20、回复次数:7Top
1 楼boxban(冻酸梨)回复于 2006-07-02 23:25:12 得分 0
void fun( char a[])
{
char* tmp = a;
if (NULL == a) return;
while(*tmp++) ;
--tmp;
while(*tmp == '*') --tmp;
tmp[1] = '\0';
}
Top
2 楼liyueliyu()回复于 2006-07-02 23:27:46 得分 0
楼上的大哥不对啊~~ 运行出来还是原来的没删除掉Top
3 楼Wolf0403(废人:独活十年~心如刀割)回复于 2006-07-02 23:57:48 得分 0
char *asterisk = NULL;
while (*s) {
if ( '*' == *s )
if ( NULL == asterisk )
asterisk = s;
else
asterisk = NULL;
}
if ( NULL != asterisk )
*asterisk = '\0';
和梨兄的代码思路有点区别:)Top
4 楼Wolf0403(废人:独活十年~心如刀割)回复于 2006-07-03 00:13:17 得分 0
代码写太急了,没测试,抱歉。
void fun( char s[])
{
char *asterisk = NULL;
while (*s) {
if ( '*' == *s ) {
if ( NULL == asterisk )
asterisk = s;
}
else {
asterisk = NULL;
}
++s;
}
if ( NULL != asterisk )
*asterisk = '\0';
}Top
5 楼yingge(...木脑壳...)回复于 2006-07-03 04:14:22 得分 0
送佛送到西吧。。。
void fun(char *s){
char *head=s;
while(*s){
head=(*s++=='*')?head:s;
}
*head='\0';
}
Top
6 楼Jim_King_2000()回复于 2006-07-03 09:39:14 得分 0
const char *del_asterisk(char *lpszStr)
{
const char *lpszSrc = lpszStr;
assert(lpszStr);
while (*lpszStr++); // get the one past the end of the string
if (lpszStr[-2] == '*')
lpszStr[-2] = '\0';
return lpszSrc;
}Top
7 楼Kvci(看了不笑就没小JJ同时又比较长的昵称__——————————————————————————————)回复于 2006-07-04 09:27:46 得分 0
void tre(char *s)
{
if(*s=='\0')return;
tre(s+1);
if(*s=='*'&*(s+1)=='\0') *s='\0';
else return;
}
main()
{
char *p="asd*asd***";
tre(p);
printf("\n%s",p);
}Top




