コードは現時点では魅力のように機能します。しかし、出力の最後の2行はここで見てきたものと同じです。Cプログラミングコンパイラでtxt FILEを表示
ここで問題は何ですか?
データは、先にビルドされたtxtファイルからのものです。ここで
1 CADBURY 999 1.900000
2 PEPSI 999 2.500000
3 IPHONE 976 2500.000000
4 SPIRULINA 100 50.000000
2 PAIPSI 100 0.900000
10 BLACKMORE 98 30.000000
17 TROPICANA 13 1.500000
17 TROPICANA 13 1.500000
コードです:あなたは、プログラムの終了時にファイルの内容をプリントアウトしている場合、それは終わりを超えて読み取ろうとするまで、fscanf関数がfeofを設定しません
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <ctype.h>
int addProduct();
struct product {
int quantity, reorder, i, id;
char name[20];
float price;
};
int main() {
FILE *fp;
int i = 0;
struct product a;
system("cls");
char checker;
int counter;
do {
fp = fopen("addproduct.txt", "a+t");
system("cls");
printf("Enter product ID : ");
scanf(" %d", &a.id);
printf("Enter product name : ");
scanf(" %s", a.name);
printf("Enter product quantity : ");
scanf(" %d", &a.quantity);
printf("Enter product price : ");
scanf(" %f", &a.price);
fprintf(fp, "%d %s %d %f\n\n", a.id, a.name, a.quantity, a.price);
printf("Record saved!\n\n");
fclose(fp);
printf("Do you want to enter new product? Y/N : ");
scanf(" %c", &checker);
checker = toupper(checker);
i++;
system("cls");
} while(checker == 'Y');
if (checker == 'N') {
fp = fopen("addproduct.txt", "r");
while (!feof(fp)) {
fscanf(fp, "%d %s %d %f", &a.id, a.name, &a.quantity, &a.price);
printf("%d %s %d %f\n\n", a.id, a.name, a.quantity, a.price);
}
fclose(fp);
}
return(0);
}
申し訳ありません。だから、4は単なる乱数であるか、それともカウンタを設定する必要がありますか? –
'4 'は' fscanf() 'によって成功裡に実行される変換の数です:'%d'、 '%s'、'%d'、 '%f'です。 – chqrlie
ありがとう、あなたがロック!神のご加護を :) –