文件中数字的提取

#include<stdio.h>

int Myisdigit(char c);

int main()
{
    char s[10000];
    char *p=s;
    int a[100];
    char filename1[20]="cfile4.txt";
    char filename2[20]="cfile5.txt";
    char temp;
    int i=0;
    int j=0;
    FILE *fp1;
    FILE *fp2;
    fp1=fopen(filename1,"r");
    fp2=fopen(filename2,"w");
    if(fp1==NULL){
        printf("cfile4.txt open error!");
        return 1;
    }
    while(!feof(fp1)){             //读到文件结束的地方
        temp=fgetc(fp1);
        if(temp!=EOF){            
            s[i]=temp;
            i++;
        }
    }
    s[i]='\0';                //可以看成字符串
    fclose(fp1);
    fprintf(stdout,"%s\n",s);               //先把读的内容输入到屏幕上
    while(*p!='\0'){
        int sum=0;
        while(!Myisdigit(*p)){
            if(*p=='-'){                      //负号
                p++;
                while(Myisdigit(*p)){
                    sum=sum*10+(*p-'0');
                    p++;
                    if(!Myisdigit(*p)){
                        a[j]=-1*sum;
                        sum=0;
                        j++;
                    }
                }
            }
            p++;
        }
        while(Myisdigit(*p)){
            sum=sum*10+(*p-'0');
            p++;
            if(!Myisdigit(*p)){
                a[j]=sum;
                sum=0;
                j++;
            }
        }
    }
    for(i=0;i<j;i++){          //将拿到的数字放到新文件中
    	if(i==j-1){
    		fprintf(fp2,"%d",a[i]);
    	}
    	else{
    		fprintf(fp2,"%d\n",a[i]);
    	}
    }
    fclose(fp2);
    return 0;
}

int Myisdigit(char c)
{
    if(c>='0'&&c<='9'){
        return 1;
    }
    return 0;
}  

有空再写成函数简化!
运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了9 篇原创文章 · 获赞 1 · 访问量 244

猜你喜欢

转载自blog.csdn.net/howoldareyougg/article/details/105764237