My code is supposed to find the product ID, name, quantity and price. When the product ID is entered, it should print the whole line where the product ID is located.
The text file contains this input:
1 CADBURY 999 1.900000
2 PEPSI 999 2.500000
3 IPHONE 976 2500.000000
4 SPIRULINA 100 50.000000
The code had been compiled with input of '4'. But the output was looping:
Please enter product ID :
It's not reading the whole line of '4'.
Here's the code:
#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 secondmain()
{
FILE * fp;
int i=0;
struct product a;
system("cls");
char checker;
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(fscanf(fp, "%d %s %d %f", &a.id, a.name, &a.quantity, &a.price)==4)
{
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);
}
/*-------------- ERROR START HERE-----------------*/
int main()
{
FILE * fp;
system("cls");
struct product a;
char array[255];
int productID;
fp = fopen("addproduct.txt","r");
while(1){
fscanf(fp, "%d %s %d %f", &a.id, a.name, &a.quantity, &a.price);
productID = atoi(array);
printf("Please enter product ID : ");
scanf(" %d", &productID);
if(productID == a.id)
{
fgets(array, 255, (FILE*)fp);
printf("%d %s %d %f\n\n", a.id, a.name, a.quantity, a.price);
}
}
return(0);
}