devc 下载++用fscanf读取文件的float型数据时,读出结果全为0.00000000

请教大神,fscanf读取csv文件,float数值会改变,怎么解_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:186,054贴子:
请教大神,fscanf读取csv文件,float数值会改变,怎么解收藏
csv文件里是IF:33,0,,,,40.33.000000 读出语句if(fscanf(fp,&%[^,],%[^,],%*d,%f,%f,%f,%*d,%f,%f,%*f,%*f&,&re-&InstrumentID,&re-&UpdateTime,&re-&LastPrice,&re-&AskPrice1,&re-&BidPrice1,&re-&HighestPrice,&re-&LowestPrice)读出到变量里会变成读出到变量里会变成下一个读出到变量里会变成读出是读出到变量里会变成为什么会有这样的问题,求解!
AB这里有 12 位 10 进制数,单精度只能满足 7 位十进制精度。
浮点数有误差是肯定的,因为十进制的有理数(有限精度)可能在二进制里面是无理数0.6=(2^(-1))+0.1=(2^(-1))+(2^(-4))+0.0375=(2^(-1))+(2^(-4))+(2^(-5))+0.00625=(2^(-1))+(2^(-4))+(2^(-5))+(2^(-8))+0.=...所以(0.6)Dec=(0.......)Binary
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或C语言用fscanf格式化输入数据总是出错,求破._百度知道
C语言用fscanf格式化输入数据总是出错,求破.
代码int N=8;struct BankUser{
char password[6];
char name[6];}a[100];void duqushuju(){
fp=fopen(&N.txt&,&r&);
fscanf(fp,&%d&,&N);
fclose(fp);
fp=fopen(&account.XML&,&r&);
for(i=0;i&N;i++)
fscanf(fp,&%s,%s,%d,%f/n&,a[i].name,a[i].password,&a[i].no,&a[i].cash);
fclose(fp);}account.xml 数据:111,,0.000000222,,0.000000333,,0.000000
account.xml 数据:111,1,0.000000222,2,0.000000333,3,0.000000
提问者采纳
fscanf流执行格式化输入fscanf遇空格换行结束注意空格结束与fgets区别fgets遇空格结束间两,,连起读入候
111,1,0.000000222,2,0.000000333,3,0.000000已经改了 还是不行.结果的图片在上面 你看看。
找到问题了,//&将fscanf(fp,&%s,%s,%d,%f\n&,a[i].name,a[i].password,&a[i].no,&a[i].cash);//改为fscanf(fp,&%s&%s&%d,%f\n&,a[i].name,a[i].password,&a[i].no,&a[i].cash);同时将account.XML改为如下格式1111111111111,0.0000002222222222222,0.0000003333333333333,0.000000我在main函数测试了下,通过了void&main(){&&&duqushuju();&&&for(int&i=0;&i&3;&i++) printf(&%s,%s,%d,%f\n\n&,a[i].name,a[i].password,a[i].no,a[i].cash);}//&之所以这样改,是因为字符串结尾加的是'\0',是字符串结束的标志,存到txt文本中后,字符串后面并没有内容。
提问者评价
谢谢 搞掂了
来自团队:
其他类似问题
为您推荐:
fscanf的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言,fscanf()读取float类型数据!时的问题!_百度知道
c语言,fscanf()读取float类型数据!时的问题!
#include &stdio.h&#include &stdlib.h&struct student{};void main(){ struct student a[3]; FILE * if((fp=fopen(&a.txt&,&r&))==NULL)
printf(&Open file error!\n&);
fscanf(fp,&%f%f%f&,&a[0].data,&a[1].data,&a[2].data);
printf(&%.2f %.2f %.2f&,a[0].data,a[1].data,a[2].data);
fclose(fp);
getch();}数据:2.314.2520.36保存atxt我程序句:
fscanf(fp,&%f%f%f&,&a[0].data,&a[1].data,&a[2].data);改:for(i=0;i&3;i++)
fscanf(fp,&%f&,&da[i].data);读数据呢WIN-TC编译求神解释
提问者采纳
肯定别错绝说种问题
我也想不明白呢。。。
#include&&stdio.h&//struct&student{&&&&float&};void&main(void){&&&&int&i;&&&&struct&student&a[3];&&&&FILE&*&&&&if((fp=fopen(&a.txt&,&r&))==NULL){&&&&&&&&printf(&Open&file&error!\n&);&&&&&&&&exit(1);&&&&}&&&&for(i=0;i&3;i++)&&&&&&&&fscanf(fp,&%f&,&a[i].data);&&&&printf(&%.2f&%.2f&%.2f&,a[0].data,a[1].data,a[2].data);&&&&fclose(fp);}
你能在WIN-TC下试试吗?我在VC++6.0下也调通了,TC下就出问题!
提问者评价
其他类似问题
为您推荐:
其他2条回答
变量名拼写错struct student a[3];for(i=0;i&3;i++) fscanf(fp,&%f&,&a[i].data);
&da[i].data
你能在WIN-TC下试试吗?我在VC++6.0下也调通了,TC下就出问题!
for(i=0;i&3;i++)&&fscanf(fp,&%f&,&da[i].data);//这里有问题,定义的struct&student&a[3];引用的&dafor(i=0;i&3;i++)&&fscanf(fp,&%f&,&a[i].data);&//这样去掉&da&的&d&就没问题了
你能在WIN-TC下试试吗?我在VC++6.0下也调通了,TC下就出问题!
这个问题应该是WIN-TC对文件读取的时候,文件指针移动的问题
fscanf的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁利用c语言编写
读出一文件名为file的内容并显示_百度知道
利用c语言编写
读出一文件名为file的内容并显示
提问者采纳
本例程序功能文件逐读取字符屏幕显示 程序定义文件指针fp,读文本文件式打文件file.txt 并使fp指向该文件打文件错 给提示并退程序程序第12行先读字符进入循环 要读字符文件结束标志(每文件末结束标志EOF)该字符显示屏幕再读入字符每读文件内部位置指针向移字符文件结束该指针指向EOF执行本程序显示整文件#include&stdio.h&main(){FILE *if((fp=fopen(&file.txt&,&rt&))==NULL){printf(&Cannot open file strike any key exit!&);getch();exit(1);}ch=fgetc(fp);while (ch!=EOF){putchar(ch);ch=fgetc(fp);}fclose(fp);}
其他类似问题
为您推荐:
其他1条回答
不用我做了,看这个就可以了。
标准文件函数
标准文件函数主要包括文件的打开、关闭、读和写等函数。不象BASIC 、
FORTRAN语方有顺序文件和随机文件之分,
在打开时就应按不同的方式确定。
Turbo C2.0并不区分这两种文件, 但提供了两组函数, 即顺序读写函数和随机读
一、文件的打开和关闭
任何一个文件在使用之前和使用之后, 必须要进行打开和关闭, 这是因为操
作系统对于同时打开的文件数目是有限制的, DOS操作系统中,
可以在DEVICE
.SYS中定义允许同时打开的文件数n(用files=n定义)。其中n 为可同时打开的文
件数, 一般n&=20。因此在使用文件前应打开文件, 才可对其中的信息进行存取。
用完之后需要关闭, 否则将会出现一些意想不到的错误。Turbo C2....
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁fscanf怎么读取文件中保存的多行数据 - C语言当前位置:& &&&fscanf怎么读取文件中保存的多行数据fscanf怎么读取文件中保存的多行数据&&网友分享于:&&浏览:856次fscanf如何读取文件中保存的多行数据文件中的数据类似这样的123.456,235.89,947,345请问如何用fscanf读取每行数据并存储到一个数组中,我用for(int i =0;i&n;i++)fscanf(fp,&%lf&,aa[i]);每次只是重复读取第一行数据------解决方案--------------------C# code
[User:liangdong Time:22:58:15 Path:~/c]$ cat main.c
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
int main(int argc, char* argv[]) {
char buf[100];
FILE *fp = fopen(&data.txt&, &r&);
if (!fp) {
return -1;
while (fgets(buf, 100, fp) != NULL) {
int len = strlen(buf);
if (buf[len - 1] == '\n') {
buf[len - 1] = '\0';
char *sep = strchr(buf, ',');
if (sep != NULL) {
*sep = '\0';
printf(&%s\n&, buf);
------解决方案--------------------
int i=0;while(!feof(p))
//p为句柄{fscanf(p,&%s\n&,a[i]);i++;}可以把每行存入到数组中
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有

我要回帖

更多关于 devc 中文版 的文章

 

随机推荐