/* 2002 年度「応用数理C3」「計算数学1」 2002-05-01 岩瀬順一 */ #include #include /* malloc(), free() */ #include /* strlen() */ #define N 10 /* 記録できる文章の数。これを 10 より大きくするには */ /* プログラムを(大きく)変える必要あり */ #define LEN 1024 /* バッファの長さ */ char *str[N]; /* ポインタの配列 */ char buf[LEN+1]; /* バッファ。+1 は '\0' のため */ main() { int i, n; for (i=0; i\n"); } } printf("> "); /* プロンプト */ fgets(buf, LEN, stdin); /* ユーザが入力 */ if (buf[0] == 'q') { break; } n = buf[0] - '0'; /* 番号に直す */ if (n < 0 || n >= N) { fprintf(stderr, "番号の範囲が不適切です.\n"); continue; } free(str[n]); if (buf[1] == '\n') { str[n] = NULL; } else { str[n] = malloc(strlen(buf+1) + 1); /* +1 は '\0' のため */ if (str[n] != NULL) { strcpy(str[n], buf+1); } else { fprintf(stderr, "メモリが足りません.\n"); return 1; } } } return 0; }