我正处于编写家庭作业的早期阶段。更大的目标有点大,超出了这个问题的范围。近期目标是从命令行获取一个或多个与年份相对应的两位数(例如 52)。然后打开那一年的文件。文件格式如下:
1952 Topps baseball
-------------------
8 10 15 17 20 47 48 49 59 71 136
153 155 159 162 168 170 175 176 186 188 202
215 233 248 252 253 254 257 259 264 270 271 272 274
282 283 284 285 287 293 294 295 297 299 300 308 310 311
312
每个文件都有一个随机(1-50 之间)的 1-3 位整数。我将年份存储在一个 int 中。然后我将后面的每个数字存储到一个数组中。然后我将使用该数组来做其他很酷的事情。我的问题是,如何从文件中扫描随机数量的整数输入。这是我到目前为止所做的:
#include <stdio.h>
#include <string.h>
main(int argc, char** argv) {
char filename[30];
int cards[100];
FILE *fp;
int year,n,i;
for (i=1; i<argc; i++) {
n=atoi(argv[i]);
sprintf (filename,"topps.%d",n);
if (!(fp=fopen(filename,"r"))){
printf("cannot open %s for reading\n",filename);
exit(3);
}
fscanf (fp, "%d%*s%*s%*s%d%d%d%d%d%d%d%d%d%d%d%d",
&year,
&cards[i],
&cards[i+1],
&cards[i+2], //this is what needs to be improved upon
&cards[i+3],
&cards[i+4],
&cards[i+5],
&cards[i+6],
&cards[i+7],
&cards[i+8],
&cards[i+9],
&cards[i+10],
&cards[i+11],
&cards[i+12]);
printf ("%d\n",year);
printf ("%d\n",cards[i+11]);
}
}
当前的 fscanf 只是一种权宜之计,以确保我可以阅读和打印信息。它最多存储第 12 个整数并打印它。出于显而易见的原因,我不想参加第 50 届,因为这毫无意义。有些文件中只有 2 或 3 个数字。任何人都可以帮助指导我找到更理想的解决方案来阅读这样的文件吗?谢谢你看。