C语言读取文本文件浮点数。
从磁盘读取一个文本文件,这个文件是由若干行组成,每一行是一个double型的浮点数,读进系统之后,printf输出这些数在屏幕上。文件的里浮点数是随机隔了了N个‘\t\r...
从磁盘读取一个文本文件,这个文件是由若干行组成,每一行是一个double型的浮点数,读进系统之后,printf输出这些数在屏幕上。
文件的里浮点数是随机隔了了N个‘ \t\r\n’,数目是10W个。
要求:读入这个问题,提取出每一个double的字符串,然后将其变为浮点数。
不用fscanf函数,实现另外一个函数:fscanf_my来完成fscanf的功能。
读入这个问题,提取出每一个double的字符串,然后将其变为浮点数,
然后每一个字节遍历,碰到' \t\r\n'这些字符,截断,之前的有效字符就形成一个double了。
要求是这样的. 展开
文件的里浮点数是随机隔了了N个‘ \t\r\n’,数目是10W个。
要求:读入这个问题,提取出每一个double的字符串,然后将其变为浮点数。
不用fscanf函数,实现另外一个函数:fscanf_my来完成fscanf的功能。
读入这个问题,提取出每一个double的字符串,然后将其变为浮点数,
然后每一个字节遍历,碰到' \t\r\n'这些字符,截断,之前的有效字符就形成一个double了。
要求是这样的. 展开
4个回答
展开全部
#include <stdio.h>
#include <math.h>
#include <string.h>
#define MAXLEN 20
int main () {
FILE *fp;
int ch,i = 0,n = 0;
char str[MAXLEN],filename[] = "indata.txt";
if((fp = fopen(filename,"rt")) == NULL) {
printf("不能打开文件:%s\n",filename);
return 1;
}
while((ch = fgetc(fp)) != EOF) {
if(ch == '\t' || ch == '\n') {
if(i > 0) {
str[i++] = '\0';
printf("%g\n",atof(str));
i = 0;
++n;
}
}
else str[i++] = ch;
}
printf("有效数据个数:%d\n",n);
fclose(fp);
return 0;
}
展开全部
使用文本操作函数fscanf读入即可。
核心代码:
float a;
FILE * f=fopen("文本名称","r");
fscanf(f,"%f",&a);
fclose(f);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
FILE *fp = fopen("TXT文件路径", "r");
double dbTmp;
while (!feof(fp))
{
fscanf(fp, "%lf", &dbTmp); //读出的数在dbTmp里,一次读一行。
}
fclose(fp); //读完就退出循环
FILE *fp = fopen("TXT文件路径", "r");
double dbTmp;
while (!feof(fp))
{
fscanf(fp, "%lf", &dbTmp); //读出的数在dbTmp里,一次读一行。
}
fclose(fp); //读完就退出循环
追问
不用fscanf函数,实现另外一个函数:fscanf_my来完成fscanf的功能。
读入这个问题,提取出每一个double的字符串,然后将其变为浮点数,
然后每一个字节遍历,碰到' \t\r\n'这些字符,截断,之前的有效字符就形成一个double了。
要求是这样的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fscanf(xxx," %lf",&xxx);
追问
不用fscanf函数,实现另外一个函数:fscanf_my来完成fscanf的功能。
读入这个问题,提取出每一个double的字符串,然后将其变为浮点数,
然后每一个字节遍历,碰到' \t\r\n'这些字符,截断,之前的有效字符就形成一个double了。
要求是这样的.
追答
#include <stdio.h>
#include <stdarg.h>
int fscanf_my(FILE*stream,const char*format,...);
int main(void)
{
double f;
while(!feof(stdin)&&fscanf_my(stdin," %lf",&f)==1)
{
printf("%lf\n",f);
}
return 0;
}
int fscanf_my(FILE*stream,const char*format,...)
{
va_list ap;
char buffer[100];
int count;
fflush(stream);
va_start(ap,format);
fgets(buffer,100,stream);
count=vsscanf(buffer,format,ap);
va_end(ap);
return count;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询