안녕하세요. 프로그래밍 3일차 뉴비입니다. 공부 중에 문제가 생겨 도움을 구하고자 합니다.
제품의 품명, 단가, 수량 등을 입력 받아 합계를 계산하고, 부가세 10%를 가산한 총액을 계산하는 프로그램을 만들고자 합니다.
교재에는 다음과 같은 코드가 예시로 주어졌습니다.
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define MAX_NAME 50
struct Item
{
char name[MAX_NAME]; //품명
int price; //단가
int num; //수량
};
int main(void)
{
int i;
int count, sum=0, total; //항목개수, 합계, 총액(부가세 포함)
struct Item *item=NULL; //항목
printf("항목의 개수를 입력하세요 : ");
scanf("%d", &count); //항목개수 입력
item = malloc(count*sizeof(item)); //메모리 할당
for(i=0; i<count; i++)
{
printf("\n품명: ");
fgets(item[i].name, MAX_NAME-1, stdin); //품명 입력
item[i].name[strlen(item[i].name-1)]='\0'; //'\n' 제거
printf("단가: ");
scanf("%d", &item[i].price); //단가 입력
printf("수량: ");
scanf("%d", &item[i].num); //수량 입력
}
printf("-----------------------------------------\n");
printf("품명\t단가\t수량\n");
printf("-----------------------------------------\n");
for(i=0; i<count; i++)
{
printf("%s\t", item[i].name); //품명 출력
printf("%d\t", item[i].price); //단가 출력
printf("%d\n", item[i].num); //수량 출력
sum += (item[i].price*item[i].num); //합계 계산
}
free(item); //메모리 반납
total = (int)(sum*1.1); //부가세 포함금액
printf("-----------------------------------------\n");
printf("합게 : %d\n", sum);
printf("총액 : %d (부가세 10%% 포함)\n", total);
return 0;
}
이 코드를 그대로 옮겨 실행하였을 때 문자열(품명)을 입력하는 부분에서 다음과 같이 문자열이 입력되지 않고, 사진에 나온 부분까지만 출력된 뒤 프로그램이 오류를 일으키며 종료됩니다.
코드를 잘못 적었나 싶어 새로이 한 번 더 써봤지만 증상은 동일합니다.
교재에 나온 그대로 적었는데 결과가 다르게 나오니 환장하겠네요. item에 문제가 있다고는 생각되는데 정확한 원인이 무엇인지도 모르겠어요 ㅠㅠ
도움 좀 부탁드리겠습니다.