数字数据如何实现
发布网友
发布时间:2022-05-18 16:57
我来回答
共1个回答
热心网友
时间:2023-10-20 09:02
设数据文件名为123.txt且在当前目录下。利用fscanf函数的选择功能,只读取文件中的int型数据,“跳过”非数字字符即能完成题面要求。举例代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
int main(void){
FILE *fp;
int ln=0,*p,x;
if((fp=fopen("123.txt","r"))==NULL){
printf("Open the file failure...\n");
exit(0);
}
while(fscanf(fp,"%d%*[^0123456789]",&x)==1 && x!=100);//找到100位置
if(feof(fp)){//未找到100则退出
printf("Starting point number not found...\n");
exit(0);
}
while(fscanf(fp,"%d%*[^0123456789]",&x)==1)//检测100后有多少个数,计入ln
ln++;
if((p=(int *)malloc((sizeof(int)+1)*ln))==NULL){//创建动态数组
printf("Application memory failure...\n");
exit(0);
}
rewind(fp);//文件指针移到开头,开始正式读文件
while(fscanf(fp,"%d%*[^0123456789]",&x)==1 && x!=100);//跳过100前的数据
p[0]=100,x=1;
while(fscanf(fp,"%d%*[^0123456789]",p+x++)==1);//数据读入p[1]及以后单元
fclose(fp);
for(x=0;x<=ln;printf("%d ",p[x++]));//打出来看看...
printf("\n");
free(p);
return 0;
}