私は宿題のコーディングの初期段階にあります。より大きな目標は少し大きく、この質問の範囲を超えています。当面の目標は、年に対応する 1 つまたは複数の 2 桁の数字 (たとえば 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 から 3 桁の整数のランダムな (1 から 50 の間の) 番号があります。年を 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 番目の整数まで格納して出力します。当然のことながら、50th には行きたくなかったのです。無意味だからです。一部のファイルには、2 つまたは 3 つの数字しか含まれていません。このようなファイルを読み取るためのより理想的なソリューションを教えてくれる人はいますか? ご覧いただきありがとうございます。