<問題> 10万個のデータのあるファイルdata.txtを、配列dataに格納し、N番目の要素を出力する。例題 0103とは別に、現実的な読み込み方法
実行例:
N? : 9999
data[9999] = 99732
解答例 #include <stdio.h> #include <stdlib.h> #include <time.h> #define DATA_SIZE 100000 int main (void) { long data[DATA_SIZE]; long i = 0; FILE *fp; char buffer[16]; /* 読み込み文字数の最大値指定。このプログラムでは16は大目 */ long n; printf("N ?: "); scanf("%ld", &n); /* 一旦、全部読み込む。本当は、key番目まででよい */ fp = fopen("data.txt", "r"); while (fgets(buffer, sizeof (buffer), fp) != NULL) { /* 読み込めなくなるまで という定番の書き方 */ sscanf(buffer, "%ld", &data[i]); /* long型整数として、data[i]の値に読み込む */ i++; } fclose (fp); /* n番目だけをprintf */ printf("data[%ld] = %ld\n",n, data[n]); /* ずばり、配列n番目の要素を出力 */ return 0; }