用C++读取文件中数据。求助、求助各位c语言大神。。

数据格式如图片所示,我写的程序如下:程序编译没有错误,但是运行时没有反应,不知道问题出在哪里。求助各位大神。#include<stdio.h>#include<stdli... 数据格式如图片所示,我写的程序如下: 程序编译没有错误,但是运行时没有反应,不知道问题出在哪里。求助各位大神。#include<stdio.h>#include<stdlib.h> #include<conio.h>void main(){ int su=1916; float kp[][4]={0.}; FILE *fin,*fw; int i,j,n=0,c,L=0; fpos_t pos; fin=fopen("e:\\33.txt","r"); fw=fopen("e:\\myprocedure\\point2.txt","w"); if(!fin) { printf("can't open file merge.txt\n"); } while(1) { n=2;L++; kp[L][0]=(float)L; while(1) { fgetpos (fin,&pos); while((c=fgetc(fin))==' '){}; if(c=='\n') break; else fsetpos (fin,&pos); if((fscanf(fin,"%9.6f",&kp[L][n]))==EOF) goto Lab1; n++; } }Lab1: fclose(fin); for(i=1;i<=su;i++) { for(j=1;j<5;j++) { printf("%9.6f ",kp[i][j]); fprintf(fw,"%9.6f ",kp[i][j]); } fputs("\n",fw); } fclose(fw);} 展开
 我来答
Polaris北斗
2016-10-31 · TA获得超过3204个赞
知道大有可为答主
回答量:2530
采纳率:79%
帮助的人:825万
展开全部

借着你的帖子重学下C的文件读读写,看你的代码是要将33.txt文件的三维坐标读出来,加个序号,写到point2.txt文件中是吧?居然还用到了goto,下面写了个代码,可以运行的,这个代码为了获取行数,对文件读了2遍,如果你事先知道行数就不需要这么写了,或者在源文件中把行数写在前面,就不用读2遍了,其实获取行数的根本原因是你为什么要把数据存进kp数组呢?如果不是必须的,那就定义3个变量就可以了,不需要数组。以下是代码:

#include <stdio.h>
int main() {
char s[50];
FILE *fileR=fopen("e:\\33.txt","r");//定义要读取的文件
FILE *fileP=fopen("e:\\point2.txt","w");//定义要写出的文件
if(fileR==NULL){
printf("要读取的文件未找到。\n");
}else if(fileP==NULL){
printf("写出的文件未创建。\n");
}else{
//获取文件行数
int rown,i;
char rs[100];
rown=0;
while(fgets(rs,100,fileR)) 
++rown;
printf("文件行数:%d\n",rown);
rewind(fileR);//将文件指针移回文件头
//定义数组
float kp[rown][4];
for(i=0;i<rown;++i){
kp[i][0]=i;
//将数据读入数组 
fscanf(fileR,"%f %f %f",&kp[i][1],&kp[i][2],&kp[i][3]);
printf("%2.0f %10.6f %10.6f %10.6f\n",kp[i][0],kp[i][1],kp[i][2],kp[i][3]);
//将数据写入文件 
fprintf(fileP,"%2.0f %10.6f %10.6f %10.6f\n",kp[i][0],kp[i][1],kp[i][2],kp[i][3]);

fclose(fileR);
fclose(fileP);


return 0;
}

White_MouseYBZ
2016-10-31 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6701万
展开全部
先指出一个错误:fscanf(fin,"%9.6f",&kp[L][n])中%9.6f的用法是错误的,fscanf不允许格式化控制符有精度(%9.6f中的.6)限制。
追问
谢谢,大神,还有什么问题吗?修改过之后还不行
追答
有人给你写好了,你就用吧……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式