使用ftell()返回文件中的元素数量

问题描述 投票:0回答:1

在此代码中,我想使用 ftell() 获取 txt 文件中的元素数量。 该文件有 24 个双精度值。此代码中的问题是它返回 27 作为元素数。为什么我的值不断增加 2?

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

void func(const char *srcFilePath)
{
    FILE *pFile = fopen(srcFilePath, "r");

    if (!pFile) {
        perror(srcFilePath);
        return;
    }
    size_t nbEle;
    fseek(pFile, 0, SEEK_END);
    size_t inSize = ftell(pFile);
    nbEle = inSize/8; // double
    printf("number of elements in file =%d \n",nbEle);
    fclose(pFile);
    double *daBuf = (double *)malloc(inSize);
    FILE *ppFile = fopen(srcFilePath, "r");
    if (ppFile == NULL)
    {
        printf("Failed to open input file. 2\n");

    }
    size_t n = 0;
    while(n < nbEle && 1 == fscanf(pFile, "%lf,", &daBuf[n])){
        n++;
    }
   printf("******* N =%d \n", n);
    if (ferror(pFile))
        perror(srcFilePath);

    fclose(pFile);

int main(void)
{
    const char inputfile[] = "/home/debian/progdir/input";

    func(inputfile);
}


c file fseek ftell
1个回答
0
投票

如果有 24 个双精度数,则它们至少由一个空格字符分隔。所以有 24 个空白字符。 24 / 8 给出 3.

一般来说,您获取文件中存储的双精度数的方法是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.