编写一个函数int fun(char a[ ],char b[]),其功能是:删除a指向的字符串中所有数字字符并将至保存到b数组
作者&投稿:丑幸 (若有异议请与网页底部的电邮联系)
请编写一个函数void fun(char a【】,char b【】,int n)~
#include<stdlib.h>
#include<string.h>
//如果返回-1,a字符串中没有数字
int fun(char a[], char b[])
{
int num=-1;
int ib=0;
char *p=a;
int isfirst=1;//是否为非数字字符第一行
while(*p)
{
if(*p >= '0' && *p <= '9')
{
b[ib] = *p;
ib++;
//删除a的内容或者替换'\n'
if(isfirst || *(p-1) == '\n')
{
strcpy(p, p+1);
p--;
}
else
{
*p = '\n';
}
}
else
{
isfirst=0;
}
p++;
}
b[ib] = 0;
if(ib > 0)
{
num = atoi(b);
}
//写入结果文件myfile.out
FILE *fp=fopen("myfile.out", "w");
fprintf(fp, "a=%s\n", a);
fprintf(fp, "b=%s\n", b);
fprintf(fp, "num=%d\n", num);
fclose(fp);
return num;
}
int main()
{
char a[]="48CTYP9R6";
char b[16];
int num=0;
num=fun(a, b);
printf("a=%s\n", a);
printf("b=%s\n", b);
printf("num=%d\n", num);
return 0;
}
不对吧,你题上的函数是3个参数,怎么后来的题目变成2个了。你再看看。。。
#include
#include
void fun(char a[],int k,int n)
{
int i;
for(i=k;i<strlen(a)-n;i++)
a[i]=a[i+n];
a[i]='\0';
}
int main()
{
char a[]="abcdefgh";
fun(a,3,2);
printf("%s
",a);
return 0;
}
#include<stdlib.h>
#include<string.h>
//如果返回-1,a字符串中没有数字
int fun(char a[], char b[])
{
int num=-1;
int ib=0;
char *p=a;
int isfirst=1;//是否为非数字字符第一行
while(*p)
{
if(*p >= '0' && *p <= '9')
{
b[ib] = *p;
ib++;
//删除a的内容或者替换'\n'
if(isfirst || *(p-1) == '\n')
{
strcpy(p, p+1);
p--;
}
else
{
*p = '\n';
}
}
else
{
isfirst=0;
}
p++;
}
b[ib] = 0;
if(ib > 0)
{
num = atoi(b);
}
//写入结果文件myfile.out
FILE *fp=fopen("myfile.out", "w");
fprintf(fp, "a=%s\n", a);
fprintf(fp, "b=%s\n", b);
fprintf(fp, "num=%d\n", num);
fclose(fp);
return num;
}
int main()
{
char a[]="48CTYP9R6";
char b[16];
int num=0;
num=fun(a, b);
printf("a=%s\n", a);
printf("b=%s\n", b);
printf("num=%d\n", num);
return 0;
}