ここから本文です

ファイルから構造体を読み込み、そのメンバのjinkoが1000000より大きければtoshi2....

miy********さん

2019/8/518:20:15

ファイルから構造体を読み込み、そのメンバのjinkoが1000000より大きければtoshi2.txtに、小さければtoshi3.txtに出力するプログラムを作りたいのですが

このプログラムでは実行しても書き込まれていませんでした。
どこが間違えているかわかりますか?

#include<stdio.h>

struct toshi {
char name[20];
int jinko;
};

int main(void) {

struct toshi a;

FILE* fp1, * fp2, * fp3;
fp1 = fopen("tshi1.txt", "r");
fp2 = fopen("toshi2.txt", "w");
fp3 = fopen("toshi3.txt", "w");

while (fscanf(fp1, "%s %d\n", a.name, &a.jinko) != 2) {
if (a.jinko >= 1000000) {
fprintf(fp2, "%s %d\n", a.name, a.jinko);
}
else {
fprintf(fp3, "%s %d\n", a.name, a.jinko);
}
}

return 0;
}

閲覧数:
4
回答数:
1

違反報告

ベストアンサーに選ばれた回答

hyu********さん

2019/8/518:37:07

while (fscanf(fp1, "%s %d\n", a.name, &a.jinko) != 2) {
では、「正しく取得できた値の数が2でないなら実行」になります。
while (fscanf(fp1, "%s %d\n", a.name, &a.jinko) == 2) {
こうではないですか?

それと、
fp1 = fopen("tshi1.txt", "r");

fp1 = fopen("toshi1.txt", "r");
のミスでしょうか。

質問した人からのコメント

2019/8/5 18:50:31

回答ありがとうございました!
指摘されたところを修正したら実行できました。
ありがとうございました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる