![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.1ベストアンサー
- 回答日時:
#include <stdio.h>
#include <stdlib.h>
int sum(int x[], int from, int to, int acc);
int main(void) {
FILE* fp;
int x[50000], p, q;
char s[5];
if ((fp = fopen("10000.txt", "r")) == NULL) {
puts("can't open file");
return EXIT_FAILURE;
}
for (int i = 0; i < 50000; i++) {
if (feof(fp) != 0) {
x[i] = -1;
break;
} else {
fscanf(fp, "%d", &x[i]);
}
}
scanf("%4s%*[^\n]%*c", s);
p = strtol(s, NULL, 10);
scanf("%4s%*[^\n]%*c", s);
q = strtol(s, NULL, 10);
printf("%d\n", sum(x, p - 1, q - 1, 0));
fclose(fp);
return EXIT_SUCCESS;
}
int sum(int x[], int from, int to, int acc) {
if ((from > to) || x[from] == -1) {
return acc;
} else {
return sum(x, from + 1, to, acc + x[from]);
}
}
/ * 注意事項
実は10000.txtの仕様が良く分からない。
・各行が何個の値を持つのか
・最大何行なのか
全く分かってないので、
・各行は最小で1つ、最大で5つの値を持つ
・行数は10,000行である
と仮定しておいて、用意する配列の要素数を最大数10,000行×5で50,000と仮定してる。
動的配列を使わない限り、C言語では自由に配列の大きさを設定出来ない故のやっつけ仕事である。
(と言うより、C言語では現代的な意味で言う「配列」と言う素敵なデータ型があるわけではなく、そこにただ、剥き出しのメモリが転がってるだけ、である)
当然ファイルから読まれる値がここで設定した配列を全部埋めきるとは限らないので、「余りの部分」が出る。
そこで、終端記号代わりにファイルの最後に来ると配列に-1の値をセットしてる。これが暫定的な配列の「終端記号」の役割を果たしているわけだ。
これも、恐らく10000.txtには負の数は含まれないだろう、と言う希望的観測でのやっつけ仕事である。
*/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- Visual Basic(VBA) エクセルVBAでメールの自動作成の モジュールを作ったのですが、txtファイルから読み込んだ本文が文 2 2022/07/20 15:01
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Ruby パイソンでテキストファイルが読み込めない 1 2022/11/14 16:42
- C言語・C++・C# c言語の質問です。 ランダムに4桁の暗証番号を出力するプログラムを作ったのですが、4947→4973 3 2022/04/16 16:47
- Ruby ruby 1 2022/06/10 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
構造体のextern方法
-
配列の要素数に変数を入れたい...
-
[C++]const int と配列
-
define で 配列
-
コンボボックスでデフォルト値...
-
構造体の配列 char *' 型は 'ch...
-
C#で構造体の配列を持った構造...
-
C言語において、 配列要素をひ...
-
C言語の配列のコピーについて
-
C言語で質問です
-
c言語の自分で数字を入力してサ...
-
AfxBeginThread の引数について
-
.NET C++で、構造体の配列をnew...
-
C#でのフィボナッチ数列
-
構造体の動的確保について
-
C言語で重複組合せを全列挙
-
配列のアドレス部
-
構造体をポインターに入れたい
-
int i, int i[1];
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
C言語において、 配列要素をひ...
-
配列の要素数に変数を入れたい...
-
構造体のextern方法
-
define で 配列
-
c言語
-
C#で構造体の配列を持った構造...
-
C言語の2次元配列 容量が大き...
-
c言語 構造体
-
C言語 ファイルの指定された行...
-
C言語についてです 5人のテスト...
-
int i, int i[1];
-
fclose()でセグメンテーション違反
-
char型配列をint型に代入するには
-
C言語から質問です。
-
Cのエラー
-
コンボボックスでデフォルト値...
-
C言語の課題が出たのですが自力...
-
MFCのCArrayを使った二次元配列
-
[C++]const int と配列
おすすめ情報