中,将所删的数字字符组成一个整数保存在变量num中并作为返回值带出,数组a中连续非数字字符作为一独立行。在主函数中分别输入测试数据:48CTYP9R6,调用函数fun并将结果按行在显示屏输出并依次写入结果文件myfile.out中。
试编写程序并用主函数予以验证。
结果:
a=”CTYP\nR\n”
b=”4896”
num=4896
#include<stdio.h>
#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;
}追问
#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;
}追问
有个错误- -
追答请说明哪里的错误
追问已解决 还是谢谢你
温馨提示:答案为网友推荐,仅供参考