豆瓣-关于C语言按行读取文件,读取其中数字,挨个转换成doube类型,存入数组

问题描述

关于C语言按行读取文件,读取其中数字,挨个转换成doube类型,存入数组

int main()
{
FILE *fp;
char buffer[50];
char filename[50];
int bufferLen;
int i;
int j = 0;
char c;
double c_number[50];

printf("Input file name: ");
scanf("%s", filename);

if((fp = fopen(filename, "rb")) == NULL)
{
    return -1;
}
while(fgets(buffer, 50, fp))
{
    for(i = 0; i < 50; i++)
    {
    c = buffer[i];
    if(c != ' ' && c != 'n' && c != 'r') //这里过滤,读取数字,文件有符号,空格什么的
    {
        c_number[j] = (double)atof(c); //这里想挨个转换double没有成功

        //sscanf(c, "%lf", c_number[j]);
        j++;
    }
    }
}
fclose(fp);

解决方案

  1. while(fgets(buffer, 50, fp)) 一直读取? 好像应该是while(fgets(buf,50,fp) != NULL)
  2. fgets得到的是一个字符指针,不一定是一个字符,是一行字符,根据你的要求,最多读取49个,因为最后一个''
    所以得到的buffer是一行数据,也就是buffer可能是一个double数据,而不是c
  3. 读取的字符数组buffer含49个字符加一个空字符,你用for循环赋值,那没有通过fgets得到内容(例如读取53.25),那么后边内容是什么?随机?
    你把后边内容同样给c,好像没有意义吧,应该加判断 if (buffer[i] == '').
  4. 看你数组都用的50,你是想要读取50行,也就是读取50个double? 那应该是50次(fgets(buffer, count, fp),其中count是你要读取的最大double字符数加1或更大。

解决方案二:

调试下,目测atof(c),而c是单个字符,这是不行的。最好用split函数切割成字符串,字符串才能解析为浮点数

解决方案三:

为什么不直接用fscanf

解决方案四:

恩 c为char 占 1个字节 double占8个字节

解决方案五:

恩 c为char 占 1个字节 double占8个字节

解决方案六:

把c定义成 char c[2] = {0};

这里 c[0] = buffer[i];

然后就可以 c_number[j] = (double)atof(c);

解决方案七:

http://blog.csdn.net/hong__fang/article/details/43488265 C语言方法和C++相同

时间: 2024-10-01 13:32:49

豆瓣-关于C语言按行读取文件,读取其中数字,挨个转换成doube类型,存入数组的相关文章

从数据库读出的JPG文件的字符流,转换成图片显示

数据|数据库|显示|转换 从数据库读出的JPG文件的字符流,转换成图片显示在页面上的相关代码 public void doPost(HttpServletRequest req, HttpServletResponse res)    throws ServletException, IOException {    ServletOutputStream out = res.getOutputStream();    Statement dispStmt = null, setStmt = n

图像处理-如何用C语言将一个二值图(只有黑白)转换成一个01数字矩阵?

问题描述 如何用C语言将一个二值图(只有黑白)转换成一个01数字矩阵? 最近做课程设计,关于图像处理的问题,将一个二值图(只有黑白)转换成一个01数字矩阵. 解决方案 http://www.w2bc.com/Article/49290

语言是用的,把日常的交流转换成其它语言就可以了(转)

近来翻译了不少国外的创业产品类文章到简书和虎嗅以及 36 氪等.承蒙大家错爱,很多网友都觉得鄙人翻译的水平挺高的,然后速度也挺快的-基本上每天靠着晚上那点点时间都能有一篇文章出来.不少人开始问我英语应该怎么学? 这里可能大家都只是在文章中了解到本人的英语还算有点水平,其实我个人的口语水平应该比书面英语更好,所以我今天就打算综合起来说说我是怎么学习英语的.当然,每个人都有自己的学习方法,但是,正如我的微信公众号所宣称的,他山之石可以攻玉!也许我的方法也有大家可以借鉴的地方,我们不妨互相借鉴下. 简

怎么获取一个文件的图标,并转换成这个图标图片的 base64 字符串?

问题描述 查到以下函数:ExtractIcon:https://msdn.microsoft.com/en-us/library/ms648068(v=vs.85).aspxExtractAssociatedIcon:https://msdn.microsoft.com/en-us/library/ms648067(v=vs.85).aspxLoadImage:https://msdn.microsoft.com/en-us/library/ms648045(v=vs.85).aspx 解决方案

wpf中的xaml转换成c#语言的问题,如何将下面的xaml转换成c#有相同的效果

问题描述 <ig:ColumnSeriesName="colCorn"Title="ColumnSeries"LegendItemTemplate="{x:Null}"ItemsSource="{StaticResourcedata}"ValueMemberPath="Y"Brush="#999999"Visibility="Visible"XAxis=&quo

文件读取-怎么把-1.1675264738839661e-025格式的浮点数从txt读取?

问题描述 怎么把-1.1675264738839661e-025格式的浮点数从txt读取? 怎么把-1.1675264738839661e-025格式的浮点数从txt读取? c语言 解决方案 直接读取,split切分,itof转换成浮点数. 解决方案二: 人家问的是C,居然有人用CPP??!!! 我做个例子: #include int main(int argc,char** argv) { float flt = 0.0; if (argc == 2) { sscanf(argv[1], "%

JAVA调用C语言写的SO文件

因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 1 // 用JNI实现 2 // 实例: 3 4 // 创建HelloWorld.java 5 class HelloWorld 6 { 7     private native void print(); 8     public static void main(String[] args) 9     { 10         new HelloWorld

php 文件读取与读取文件输出内容例子

一,读取文件 先解释一下,什么是读取文件本身,什么叫读取文件输入内容.举个例子test.php里面的内容<?php  echo "test"; ?> 1,读取文件本身就是读取文件内所有内容,读取后就能得到<?php  echo "test"; ?> 2,读取文件输出内容是读取文件所表现出来的东西,读取后得到test 二,fopen方法 1,读取文件本身   <?php  $filename = "test.php";

asp.net 如何将PDF文件转换成EXCEL,WORD??

问题描述 asp.net 将PDF文件转换成EXCEL,WORD?? 有没有做过的? 或转换出来带格式的txt也行, 问题补充:提供可读日文PDF的命令行程序也可.问题补充:我试过很多PDF转换到其他格式文档的工具了,大部分对日文,中文支持不好,可以专成txt的,但又丢掉了内容的格式,无法准确提取信息.找到一款不错的,但不提供命令行功能,而且收费.问题补充:如果要调用命令行工具,现在找一款免费,而支持日文,可以将PDF专成excel的工具,又不好找,还有指点 解决方案 看看这个,也许对你有用ht