I seems to be having trouble with the forever loop, it seems to be working the first time i run the program but for some reason it seems to skip the option of asking the user if they would like to enter anymore CDs... Any help would be appreciated, thank you!
/*
* CourseProj.c
* Create a program (database) that a record shop might use to track its
inventory of CDs
* We need the following fields:
* - Tittle, Artist, Number of tracks, Album/single, Price
* This project must be commented
*/
#include <stdio.h>
main(){
char title [100][61];
char artist [100][61];
int num_tracks[100]; /* number of tracks on the CD */
float price[100];
int album[100]; /* boolean - is the CD an ALBUM? */
char type; /* used to read in album/single info */
int count = 0; /* how many Cds are being tracked */
int i; /* loop counter */
printf( "Welcome to the CD database.\n");
printf( "You can store a maximum of 100 CDs.\n");
/*
* Loop until they no longer wish to enter any more CDs
*
*/
for (;;){ /* forever loops are convenient for this sort of thing */
/*
* Ask them if they want to enter another CD
* Any answer other than y or Y wil be treated as a No
*/
printf("\nHave you any more CDs to enter (y/n)? ");
fflush(stdin);
scanf("%c", &type);
if (type != 'y' && type !='Y')
break;
printf("\n"); /* for neat output */
// First, the title
printf("Please enter the details of the CD %d... \n\n", count+1);
printf("Title? ");
fflush(stdin);
scanf("%s", title[count]);
// input the artist name
printf("Artist? ");
fflush(stdin);
scanf("%s", artist[count]);
// Now we need to input the number of tracks in the Album
printf("Number of tracks? ");
fflush(stdin);
scanf("%d", &num_tracks[count]);
// need to check if it's an Album or a single
for (;;){
printf("Album or single (a for album, s for single)? ");
fflush(stdin);
scanf(" %c", &type);
if (type == 'a' || type == 's')
break;
printf("Error - only 'a' or 's' are allowed\n");
}
album[count] = type == 'a'; // if we get here it must be 'a' or 's'
//need to prompt the user for the price of the cd
printf("Retail price (e.g. 4.65)?");
fflush(stdin);
scanf("%f", &price[count]);
count = count + 1;
/*
* Check if we have filled up the array
*/
if (count == 100){
printf("You have reached the limits of this program\n\n");
break;
}
}
/*
* Output the CD details
*/
for ( i = 0; i < count; i++){
printf("\nThe details of CD %d are:\n", i+1);
printf("==============================\n");
printf("Title: %s\n", title[i]);
printf("Artist: %s\n", artist[i]);
printf("Number of track: %d\n", num_tracks[i]);
//let check what the user input with the boolean
if (album[i])
printf("Album\n");
else
printf("Single\n");
printf("Price: %.2f\n", price[i]);
printf("===========================\n");
if ( i < count - 1){ // only do this if there are more CDs to see
/*
* A user-friendly way to progress to the next CD
*/
printf("\nPress ENTER to see the next set of details: ");
fflush(stdin);
getchar();
}
}
/*
* A user-friendly way to exit the program
*/
printf("\nPress ENTER to exit the program: ");
fflush(stdin);
getchar();
}
Try using this chunk of code into your program to fetch the character from the userĀ“s input. It worked for me while I runned it in VisualStudio 2012.