テキストファイルの読み書き

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ミカン
記事: 3
登録日時: 2年前

テキストファイルの読み書き

#1

投稿記事 by ミカン » 2年前

C言語初心者です。数値が書かれたテキストファイルを読み込み、合計を求めて新しいファイルを作る方法がわかりません。合計は最後の行に追加します。

20,21,4,27 → 20,21,4,27,72

ご教授お願い致します。

box
記事: 2002
登録日時: 13年前

Re: テキストファイルの読み書き

#2

投稿記事 by box » 2年前

数値が書かれたテキストファイル
何行ありますか?また、1行あたりいくつの数値が並んでいますか?
合計は最後の行に追加します。

20,21,4,27 → 20,21,4,27,72
最後の「列」でいいですね?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ミカン
記事: 3
登録日時: 2年前

Re: テキストファイルの読み書き

#3

投稿記事 by ミカン » 2年前

返信ありがとうございます。1行あります。1行あたり4つの数値が並んでいます。最後の行ではなく最後の列です。

box
記事: 2002
登録日時: 13年前

Re: テキストファイルの読み書き

#4

投稿記事 by box » 2年前

1行4列限定ならばこんなのでいいかも。
ただし、読み込むファイルの置き場所は注意が必要そうです。
開発環境によって置くべき場所が異なると思いますので。
当方の環境ではソースファイルと同じ場所でOKでした。

コード:

#include <stdio.h>
#include <stdlib.h>

#define N (4)

void inputData(int num[])
{
    FILE *fp;

    fp = fopen("read.txt", "r");
    if (!fp) {
        fprintf(stderr, "read file open error! operation denied.\n");
        exit(EXIT_FAILURE);
    }
    fscanf(fp, "%d,%d,%d,%d", &num[0], &num[1], &num[2], &num[3]);
}

int getSumArray(int num[])
{
    int sum, i;

    for (sum = i = 0; i < N; i++) {
        sum += num[i];
    }
    return sum;
}

void outputData(int num[], int sum)
{
    FILE *fp;

    fp = fopen("write.txt", "w");
    if (!fp) {
        fprintf(stderr, "write file open error! operation denied.\n");
        exit(EXIT_FAILURE);
    }
    fprintf(fp, "%d,%d,%d,%d,%d", num[0], num[1], num[2], num[3], sum);
}

int main(void)
{
    int num[N], sum;

    inputData(num);
    sum = getSumArray(num);
    outputData(num, sum);
    return EXIT_SUCCESS;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る