假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。请问哪错了?
#include<stdio.h>voidfun(char*a){inti=0,j,n=0;char*p;while(*a!='\0'){*p++=*a++;n++;}p...
#include <stdio.h>
void fun( char *a )
{
int i=0,j,n=0;
char *p;
while (*a!='\0')
{*p++=*a++;n++;}
p=a;
for(j=0;j<n;j++)
{while (*p!='*')
{a[i]=*p;
i++;
}
p++;}
a[i]='\0';
}
main()
{ char s[81];
void NONO ( );
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i ; char s[81] ;
in = fopen("in.dat","r") ;
out = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in, "%s", s) ;
fun(s) ;
fprintf(out, "%s\n", s) ;
}
fclose(in) ;
fclose(out) ;
} 展开
void fun( char *a )
{
int i=0,j,n=0;
char *p;
while (*a!='\0')
{*p++=*a++;n++;}
p=a;
for(j=0;j<n;j++)
{while (*p!='*')
{a[i]=*p;
i++;
}
p++;}
a[i]='\0';
}
main()
{ char s[81];
void NONO ( );
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i ; char s[81] ;
in = fopen("in.dat","r") ;
out = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in, "%s", s) ;
fun(s) ;
fprintf(out, "%s\n", s) ;
}
fclose(in) ;
fclose(out) ;
} 展开
1个回答
展开全部
#include <stdio.h>
void fun( char *a )
{
int i=0,j,n=0;
char *p = new char[81]; ///分配空间
char *q;
char *s;
q=p; ///记录p的首地址
s=a; ///记录a的首地址
///*p没有分配空间啊!下面如果使用p=a,则两者指向同一个地址,会产生混乱的
while(*a!='\0')
{
*p++=*a++;
n++;
}
p=q; ///重置指针到首地址
a=s;
for(j=0;j<n;j++)
{
if(p[j] != '*')
{ a[i] = p[j];
i++;
}
}
a[i]='\0';
delete []p; ///删除分配的空间
}
int main()
{ char s[81];
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
return 0;
}
void fun( char *a )
{
int i=0,j,n=0;
char *p = new char[81]; ///分配空间
char *q;
char *s;
q=p; ///记录p的首地址
s=a; ///记录a的首地址
///*p没有分配空间啊!下面如果使用p=a,则两者指向同一个地址,会产生混乱的
while(*a!='\0')
{
*p++=*a++;
n++;
}
p=q; ///重置指针到首地址
a=s;
for(j=0;j<n;j++)
{
if(p[j] != '*')
{ a[i] = p[j];
i++;
}
}
a[i]='\0';
delete []p; ///删除分配的空间
}
int main()
{ char s[81];
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询