fscanf() 在文件内按格式读取,为什么读出来的全是零?

问题描述

fscanf() 在文件内按格式读取,为什么读出来的全是零?
 int PrintGood()
{
    FILE *fp=fopen("E:\商品信息.txt","w+");
    if(fp==NULL)
    {
        exit(0);
    }
    int i;
    for(i=0;i<list.lenth;i++)
    {
        fprintf(fp,"%s %s %0.2f %dn",list.good[i].lei,list.good[i].name,list.good[i].price,list.good[i].buy);
    }
    return 0;
}

打印的文件如下
E:商品信息
书 数据 35.00 2016
食 草莓 35.00 2015
肥 克拉 100.00 2013
药 天魔 60.00 9999

读取的函数

 int ReadGood()
{
    FILE *fp=fopen("E:\商品信息.txt","r+");
    if(fp==NULL)
    {
        exit(0);
    }
    int i=0;
    printf("读入的是:");
    fflush(stdin);
    printf("%d",fscanf(fp,"%s %s %0.2f %d",list.good[i].lei,list.good[i].name,&list.good[i].price,&list.good[i].buy));
    while(fscanf(fp,"%s %s %0.2f %d",list.good[i].lei,list.good[i].name,&list.good[i].price,&list.good[i].buy)!=EOF)
    {
        i++;
        printf("list.lenth=%d",list.lenth);
        printf("%s %s %0.2f %dn",   list.good[i].lei,list.good[i].name, list.good[i].price, list.good[i].buy);
        list.lenth++;
    }
    system("pause");
    fclose(fp);
    return 0;

}

解决方案

list在哪里定义的,里面有没有值?lenth?是不是length,拼写也不对。

解决方案二:

你的fscanf不太对,%0.2f改成%f以后试试

 #include <stdio.h>
#include<string.h>
#include<stdlib.h>

 int ReadGood()
{
    char lei[32],name[32];
    float price;
    int buy;
    FILE *fp=fopen("E:\商品信息.txt","r+");
    if(fp==NULL)
    {
        exit(0);
    }
    int i=0;
    printf("读入的是:");
    fflush(stdin);
    //printf("%d",fscanf(fp,"%s %s %f %d",lei,name,&price,&buy));
    while(fscanf(fp,"%s %s %f %d",lei,name,&price,&buy)!=EOF)
    {
        i++;
        printf("%s %s %.2f %dn",lei,name,price,buy);
    }
    system("pause");
    fclose(fp);
    return 0;

}
int main()
{
    ReadGood();
}

时间: 2024-12-26 20:42:05

fscanf() 在文件内按格式读取,为什么读出来的全是零?的相关文章

c++-C++下如何从读取文件内的数据并且排序然后输出到另外一个文件

问题描述 C++下如何从读取文件内的数据并且排序然后输出到另外一个文件 如题 大一新手 自学太累了 希望有引路人 拜托各位了 谢谢! 解决方案 即便你学会了,写起来也要好多行,建议你用C#吧.实现整个需求只要1行代码就行了: File.WriteAllLines("输出文件.txt", File.ReadAllLines("文件名.txt").OrderBy(x => 排序条件)); 解决方案二: 自学太累?是你没有用心吧.偶也是自学走过来的,非计算机及相关专

c++的问题-C++如何读取一个OMS文件,XML格式

问题描述 C++如何读取一个OMS文件,XML格式 C++如何读取一个OMS文件,XML格式,输出最好要有坐标,最后转化路型为速度 解决方案 设计一个xml格式的文件python如何读取xml格式的文件读取/书写Java的XML格式properties文件

如何在客户端上读取大数据文件(NetCDF格式)

问题描述 如何在客户端上读取大数据文件(NetCDF格式) 小妹这里遇到一个技术问题,请各位大牛不吝赐教啊. 我们现在在做一个小网站,主要实现在客户端上传NETCDF文件,然后再服务器端读入,并对读入数据进行一系列运算后,向客户端返回运算结果,并在客户端显示出来. (NETCDF文件是一种科学数据的文件格式化,需要通过NetCDF 接口函数库来读取文件) 现在我们遇到一个问题,由于NETCDF文件数据量太大(几百兆左右),在服务器端读取NETCDF文件花费的时间太长,影响了页面的操作效率,所以我

c# 怎样读取mobi文件或mobi格式中文文档详解

问题描述 c#怎样读取mobi文件,mobi格式中文文档详解,谁有源码或文档的,先谢过了 解决方案 解决方案二:没人回答?..解决方案三: 解决方案四:好吧我不知道--不过帮你谷歌了--网上没找到--应该是没这需求吧--mobi我记得用在了Kindle上不过应该是可以读的,因为Windows8.1上有读取这个的App,你可以逆向一下--解决方案五:https://mbc.codeplex.com/这里有demo下载看看

C++程序需要读取数据文件,但是总是读取不出啊

问题描述 C++程序需要读取数据文件,但是总是读取不出啊 图上的表格就是要读取的数据,程序如下,主要是我不太清楚数据文件格式是什么,程序应该没错#include#include include""stdlib.h"" #include""stdio.h""#include#includeusing namespace std;#include""time.h""#include"

c语言-关于使用C语言自己写pcap文件,使用wireshark读取的问题

问题描述 关于使用C语言自己写pcap文件,使用wireshark读取的问题 命令行下netsh trace命令抓取的网络包放在了.etl文件里,怎么提取抓到的数据包,并且把它对应的进程ID从etl文件中拿到 命令如下: C:windowssystem32> netsh trace start capture=yes tracefile="e: est.etl" *******开始关联(就是在抓取 当前计算机上de网络数据包) C:Wndowssystem32> netsh

c++ mfc-mfc开发中 读取经过des加密的文件时,只能读取一部分加密文件

问题描述 mfc开发中 读取经过des加密的文件时,只能读取一部分加密文件 在mfc中,读取一个经过des加密的文件时只能读取到其中的一部分文件,其他的都读取不到 解决方案 先看解密是否正确,估计格式就不对.

针对GZIP文件类型的并行读取

一,前言 GZIP是最常见的压缩文件格式,目前DataX是支持对该压缩文件直接的读取,但每个GZIP仅仅只能启动一个线程来读取,当GZIP比较大,或者说针对GZIP中的数据有着较复杂的操作的情况下,执行效率往往比较低下.下面就讨论下如何对针对GZIP文件类型的并行读取,大幅度提高执行效率. 二,简单测试 首先对一个GZIP文件进行解压缩的测试: $ll -h event_custom_json_201705161100.0.log.gz -rw-r--r-- 1 weiguang.sunwg u

C语言中对文件最基本的读取和写入函数_C 语言

C语言read()函数:读文件函数(由已打开的文件读取数据)头文件: #include <unistd.h> 定义函数: ssize_t read(int fd, void * buf, size_t count); 函数说明:read()会把参数fd 所指的文件传送count 个字节到buf 指针所指的内存中. 若参数count 为0, 则read()不会有作用并返回0. 返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动.