好吧:所以我有一个文件,我必须处理它。过度简化,该文件具有以下格式:
n
first name
second name
...
nth name
random name
do x⁽¹⁾, y⁽¹⁾ and z⁽¹⁾
random name
do x⁽²⁾, y⁽²⁾, z⁽²⁾
...
random name
do x⁽ⁿ⁾, y⁽ⁿ⁾, z⁽ⁿ⁾
所以,实际的细节并不重要。问题是:我必须声明一个变量 n,我有一个数组 name[MAX],我将用名称填充这个数组,从 name[0] 到 name[n-1]。
好吧,问题是:如果我以前不知道我有多少个名字,我怎么能得到这个输入?
例如,如果这是来自键盘的用户输入,我可以做得很好:我会这样做:
int n; char name[MAX];
scanf( "%d", &n);
int i; for (i = 0; i < n; i++)
scanf( "%s", &N[i]);
我可以继续,做整个代码,但你明白了。但是,我的输入现在来自一个文件。我不知道如何获取输入,我所能做的就是 fscanf() 整个文件,但由于我不知道它的大小(第一个数字将确定它),所以我不能这样做。据我所知(如果这不是真的,请纠正我,我对此很陌生),我们不能使用命令“for”并逐渐获取数字,就好像它来自键盘一样,对吧?
所以,我看到的唯一出口是找到一种从文件中读取特定行的方法。如果我能做到这一点,剩下的就很容易了。问题是,我该怎么做?我用谷歌搜索了它,我什至在那里发现了一些问题,尽管它根本没有任何意义。显然,从文件中读取特定行非常复杂。
这是来自初学者的问题集,所以我怀疑它是否复杂。我一定错过了一些非常简单的东西,虽然我只是不知道它是什么。
所以,问题是:例如,你会怎么做?
如何扫描文件中的第一个数字 n,然后扫描其他“n”个名称,将每个名称分配给数组中的一个元素(名字 = 名称 [0],姓氏 = 名称 [n - 1]) ?