C/C++如何读取TXT文件的行数和把TXT文件的内容存到数组中

12.1 22.1 34.5 44.3 53.8 62.9 70.6
33.2 45.9 43.7 38.5 90.3 21.6 87.432.3 65.9 45.6 76.4 77.9 23.5 67.9......文件名为my.txt,共有N行7列这样的数据。请问如何得到这个文件的行数N,并且把上面数据的每一列依次赋值给x1[N]、x2[N]、x3[N]、x4[N]、x5[N]、x6[N]、x7[N]。

我该怎么改程序,谢谢
我怎么得到N

C语言读取TXT文件的行数并把把TXT文件的内容存到数组中,需要根据每行的内容(字符,数字,字符串)选取fgets、fscanf或者fgets。

这里假设每行是一个字符串,每行不超过127个字符(用数组存字符串,最后一位存'\0'),选取fgets进行读取。

示例代码如下:

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

int main(int argc, char* argv) {
    FILE* rf = fopen("input.txt","r");
    char a[1024][128];
    int i=0;
    while(fgets(a[i],128,rf))i++;
    int n=i; 
    printf("行数:%d\n",n);
    fclose(rf);
    i=0;
    while(i<n)printf("%s",a[i++]);
    system("pause");
    return 0;
}

运行结果:

其中input.txt的内容如下:

源程序,输入文件均可从附件下载。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-06
可以用getline一次读取一行,对每行的数据在进行处理。这个N应该要读完了才知道,可以用容器,就不用考虑N的事情了吧,也不用想着释放内存了。追问

容器??、什么意思。我不太明白,我刚学C不久,谢谢

追答

vector,list这些,网上资料很多的,都是动态分配大小的,使用前不必知道数据量的大小。

本回答被网友采纳
第2个回答  2014-11-06
第3个回答  2014-11-06
为什么不使用fscanf从文件里面 直接一个一个的double 读取追问

因为不同列有不同的作用,所以放在不同数组里

追答

1.如果是用C语言的话 使用fcanf依次读取第i个放在第i%7个数组里面
2.c++的话使用文本流iostream标准库就可以实现了(getline读取每一行,cin>>word读取行里面的每一个数字)
3.说实话你这些代码,没有C也没有C++的样子,从其他的语言转过来的?

追问

不是,是我自己写的。。。因为其他原因我有时候不能用流标准库,所以采用FILe方式打开文件的

相似回答