テキストファイルから数値を読み込むのはfscanfを使えば楽です。
質問文と貼られたコードからでは今一どういった事がしたいのかがわかりませんが、
scanfで入力された個数分の数値をテキストファイルから読み込みたいという事なら下記のようにすればできます。
(※data.txtは数字と数字の間にスペースや改行を入れて下さい)
C
1#include <stdio.h>
2#include <stdlib.h>
3
4int main()
5{
6 int *P, Max = 0, Add = 0;
7
8 FILE* fp = fopen("data.txt", "r");
9 if (fp == 0) {
10 printf("ファイルを開くのに失敗しました。\n");
11 return 1;
12 }
13
14 while(1){
15 printf("数字の個数:");
16 scanf("%d", &Max);
17 if (Max <= 0) {
18 printf("1以上の数値を入力して下さい\n");
19 }
20 else {
21 break;
22 }
23 }
24
25 P = (int*)calloc(Max, sizeof(int));//動的メモリ確保
26
27 for (int i = 0; i < Max; i++) {
28 if (fscanf(fp, "%d", &P[i]) == -1){//テキストファイルから数値読み込み
29 printf("テキストファイルから%d個の数字しか読み込めませんでした。\n",i);
30 free(P); //メモリ解放
31 fclose(fp); //ファイルのクローズ
32 return 1;
33 }
34 Add += P[i];
35 }
36
37 printf("合計:%d\n", Add);
38 printf("平均:%d\n", Add / Max);
39
40 free(P); //メモリ解放
41 fclose(fp); //ファイルのクローズ
42
43 return 0;
44}
あと環境書いてないですけど、VisualStudioだとscanfやfscanfは警告が出るのでコードの頭に、
c
1#define _CRT_SECURE_NO_WARNINGS
と書く必要があります。