|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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++;
- }
复制代码
|
|