ソースコード
源文件
1|/* realloc01.c */
2|
3|#include <stdio.h>
4|#include <string.h>
5|#include <stdlib.h>
6|
7|int main(void)
8|{
9| double *pd, *pd2, sum = 0;
10| int no = 0, i;
11| char szData[32];
12|
13| pd = (double *)malloc(0);
14| if(pd == NULL){
15| perror("領域確保に失敗\n");
16| exit(-1);
17| }
18| while(1){
19| printf("数値を入力してきださい。(Eで終了):");
20| scanf("%s", szData);
21| if(strcmp(szData, "E") == 0 ||
22| strcmp(szData, "e") == 0){
23| printf("入力を終了します\n");
24| break;
25| }
26| pd2 = (double *)realloc(pd, sizeof(double) * (no + 1));
27| if(pd2 == NULL){
28| perror("領域のサイズ変更に失敗しました\n");
29| free(pd); /* すでに確保してあるメモリを解放 */
30| exit(-2);
31| }
32| pd = pd2;
33| pd[no] = atof(szData);
34| sum += pd[no];
35| no++;
36| }
37| if(no){
38| for(i = 0; i < no; i++){
39| printf("[No.%d] %f\n", i + 1, pd[i]);
40| }
41| printf("合計\t%f\n", sum);
42| printf("平均\t%f\n", sum / no);
43| }
44| free(pd);
45| return 0;
46|}
|