Llllln 发表于 2022-4-1 14:12:45

从TXT文件读取数据

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#define N (20)


int main()
{       
        int i = 0;
        int flag = 0, file_row = 0, count ;
        FILE* fp = fopen("C:\\Users\\hp\\Desktop\\summary\\pythonCodes\\c.txt", "r");
        if (fp == NULL)
        {
                return 0;
        }
        while (!feof(fp))
        {
                flag = fgetc(fp);
                if (flag == '\n')
                        count++;
        }
        //file_row = count + 1; //加上最后一行
        //printf("row = %d\n", count);
        double* a;
        a = (double*)malloc(count * sizeof(double));
        while (0 == feof(fp))
        {
                fscanf(fp, "%lf ", &a);                               
                i++;
        }
        for (int j = 0; j < count; j++)
        {
                printf("%lf\n", a);
        }
        free(a);
        return 0;
}


我想读取TXT文件数据,一行一个数,所以定义了一个指针,然后动态分配内存,但是长度需要需要事先定好,所以我分配了较长的内存,但是将数据读取之后,这个a[]还有多余的长度,输出的时候就是乱码了,不知道怎么把多出来的去掉,所以我又想先算出来txt有多少行,然后内存分配的长度就是行数(count),可是这样运行之后a[]根本没有读取到值,如果把count换成宏定义的N就可以,所以我猜是不是因为count需要计算?但是count又是在分配内存之前就算好的,为什么不行?
或者大家有更好的办法吗?

jhq999 发表于 2022-4-1 15:06:57

      
        double* a;
      a = (double*)malloc(count * sizeof(double));
        fseek(fp,0,SEEK_SET);//////////试试
      while (0 == feof(fp))
      {
                fscanf(fp, "%lf ", &a);                              
                i++;
      }

Llllln 发表于 2022-4-2 20:55:10

jhq999 发表于 2022-4-1 15:06


可以了!感谢!
页: [1]
查看完整版本: 从TXT文件读取数据