用C语言如何读进文本文件中的实型数据?
答案:3 悬赏:0
解决时间 2021-12-14 04:36
- 提问者网友:乏味沐染
- 2021-12-13 19:41
我用fread(a,4,2,fp);[说明a为float型数组]读取时,读出的是错的数,用读字符的可以读出字符型的数字,是因为文本本身存储的原因不能直接读出实型数据吗?
最佳答案
- 二级知识专家网友:深街酒徒
- 2021-12-13 20:33
有个读浮点数的例子!
#include
#include"VALUE.c"
#include"LEN.c"
extern void length(double p1[51][3],double p2[51][3],double p3[51][3],double len[51][12]);
void readcoord(void)
{
double P1[51][3],P2[51][3],P3[51][3];
int i;double x,y,z;
FILE *fp;
if((fp=fopen("123.txt","r"))==NULL)
{
printf("cannot open file\n");
}
for(i=0;i<51;i++)
{
fscanf(fp,"%lf %lf %lf\n",&x,&y,&z);
Q[i][0]=P1[i][0]=x;
Q[i][1]=P1[i][1]=y;
Q[i][2]=P1[i][2]=z;
printf("%lf %lf %lf\n",Q[i][0],Q[i][1],Q[i][2]);
}
for(i=0;i<51;i++)
{
fscanf(fp,"%lf %lf %lf\n",&x,&y,&z);
Q[i+51][0]=P2[i][0]=x;
Q[i+51][1]=P2[i][1]=y;
Q[i+51][2]=P2[i][2]=z;
printf("%lf %lf %lf\n",Q[i+51][0],Q[i+51][1],Q[i+51][2]);
}
for(i=0;i<51;i++)
{
fscanf(fp,"%lf %lf %lf\n",&x,&y,&z);
Q[i+102][0]=P3[i][0]=x;
Q[i+102][1]=P3[i][1]=y;
Q[i+102][2]=P3[i][2]=z;
printf("%lf %lf %lf\n",Q[i+102][0],Q[i+102][1],Q[i+102][2]);
}
fclose(fp);
length(P1,P2,P3,len0);
}
#include
#include"VALUE.c"
#include"LEN.c"
extern void length(double p1[51][3],double p2[51][3],double p3[51][3],double len[51][12]);
void readcoord(void)
{
double P1[51][3],P2[51][3],P3[51][3];
int i;double x,y,z;
FILE *fp;
if((fp=fopen("123.txt","r"))==NULL)
{
printf("cannot open file\n");
}
for(i=0;i<51;i++)
{
fscanf(fp,"%lf %lf %lf\n",&x,&y,&z);
Q[i][0]=P1[i][0]=x;
Q[i][1]=P1[i][1]=y;
Q[i][2]=P1[i][2]=z;
printf("%lf %lf %lf\n",Q[i][0],Q[i][1],Q[i][2]);
}
for(i=0;i<51;i++)
{
fscanf(fp,"%lf %lf %lf\n",&x,&y,&z);
Q[i+51][0]=P2[i][0]=x;
Q[i+51][1]=P2[i][1]=y;
Q[i+51][2]=P2[i][2]=z;
printf("%lf %lf %lf\n",Q[i+51][0],Q[i+51][1],Q[i+51][2]);
}
for(i=0;i<51;i++)
{
fscanf(fp,"%lf %lf %lf\n",&x,&y,&z);
Q[i+102][0]=P3[i][0]=x;
Q[i+102][1]=P3[i][1]=y;
Q[i+102][2]=P3[i][2]=z;
printf("%lf %lf %lf\n",Q[i+102][0],Q[i+102][1],Q[i+102][2]);
}
fclose(fp);
length(P1,P2,P3,len0);
}
全部回答
- 1楼网友:我颠覆世界
- 2021-12-13 20:57
计算机中只认二进制串!!!
硬盘里的数据全是以二进制形式写的。
而txt文件中的数据,则是ascii码,你如果认为这一个二进制串背后的逻辑意义是一个实数,那你必须自己做转换
例如 123
数据实际上是
0x41 0x42 0x43
你要自己做转换
- 2楼网友:闲懒诗人
- 2021-12-13 20:39
#include <stdio.h>
int readfile(const char* szfilename,int *inum1,char *szstr1,char *szstr2,int *inum2) { file *file=null; file=fopen(szfilename,"r"); if (!file) { puts("文件打开失败"); return 0; } char szbuf[512]={0}; fread(szbuf,512,1,file); sscanf(szbuf,"%d %[^/]/%s %d",inum1,szstr1,szstr2,inum2); fclose(file); return 1; }
int main() { int inum1=0,inum2=0; char szstr1[10]={0},szstr2[10]={0}; if(readfile("1.txt",&inum1,szstr1,szstr2,&inum2)) printf("%d %s %s %d\n",inum1,szstr1,szstr2,inum2); return 0; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |