加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言从txt文件中逐行读入数据存到数组中的实现方法

发布时间:2020-12-16 05:15:29 所属栏目:百科 来源:网络整理
导读:首先,要知道数据的存储格式是怎样的, 65 2722 542691 514644 506588 524565 558608 580648 586696 572482 564 第一行表示数字的个数和维数,所以要先读入这些信息: span style="white-space:pre"/spanFILE *fp = fopen("2D_Jesscia_keypos.txt","r");if (

首先,要知道数据的存储格式是怎样的,

65 2
722 542
691 514
644 506
588 524
565 558
608 580
648 586
696 572
482 564

第一行表示数字的个数和维数,所以要先读入这些信息:

<span style="white-space:pre">	</span>FILE *fp = fopen("2D_Jesscia_keypos.txt","r");
	if ( !fp ) 
	{
		fprintf( stderr,"! Error: faild to open keypos file n" );
		return -1;
	}
	fscanf(fp,"%d %d%c",&in.numberofpoints,&dim,&ne);

这样就得到了个数信息,这样方便动态的分配内存,接下来就可以逐行读入数据了:

<span style="white-space:pre">	</span>in.pointlist = (REAL *) malloc( in.numberofpoints * 2 * sizeof(REAL) );
	char buf[1024];
	char pt1,pt2;
	for (i = 0; i < in.numberofpoints; i++)
	{
		if (!feof(fp))
		{
			if (fgets(buf,1024,fp) == NULL)
				break;
			sscanf(buf,"%s %sn",&pt1,&pt2);
			in.pointlist[2 * i] = atoi(&pt1);
			in.pointlist[2 * i + 1] = atoi(&pt2);		
		}
	}

注意,是现将每一行读入buf中,这是字符串类型的,然后再利用sscanf将里面的内容读给pt1和pt2,再利用atoi函数得到数据类型的值。

以上就是小编为大家带来的C语言从txt文件中逐行读入数据存到数组中的实现方法全部内容了,希望大家多多支持编程小技巧~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读