马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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]);
i++;
}
for (int j = 0; j < count; j++)
{
printf("%lf\n", a[j]);
}
free(a);
return 0;
}
我想读取TXT文件数据,一行一个数,所以定义了一个指针,然后动态分配内存,但是长度需要需要事先定好,所以我分配了较长的内存,但是将数据读取之后,这个a[]还有多余的长度,输出的时候就是乱码了,不知道怎么把多出来的去掉,所以我又想先算出来txt有多少行,然后内存分配的长度就是行数(count),可是这样运行之后a[]根本没有读取到值,如果把count换成宏定义的N就可以,所以我猜是不是因为count需要计算?但是count又是在分配内存之前就算好的,为什么不行?
或者大家有更好的办法吗?
double* a;
a = (double*)malloc(count * sizeof(double));
fseek(fp,0,SEEK_SET);//////////试试
while (0 == feof(fp))
{
fscanf(fp, "%lf ", &a[i]);
i++;
}
|