게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C언어 질문 좀 여쭙겠습니다.
게시물ID : programmer_18125짧은주소 복사하기
작성자 : 왕마왕
추천 : 0
조회수 : 877회
댓글수 : 8개
등록시간 : 2016/08/08 23:03:08
옵션
  • 본인삭제금지
안녕하세요. 프로그래밍 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;
}

이 코드를 그대로 옮겨 실행하였을 때 문자열(품명)을 입력하는 부분에서 다음과 같이 문자열이 입력되지 않고, 사진에 나온 부분까지만 출력된 뒤 프로그램이 오류를 일으키며 종료됩니다.

1.JPG
2.JPG

코드를 잘못 적었나 싶어 새로이 한 번 더 써봤지만 증상은 동일합니다.

교재에 나온 그대로 적었는데 결과가 다르게 나오니 환장하겠네요. item에 문제가 있다고는 생각되는데 정확한 원인이 무엇인지도 모르겠어요 ㅠㅠ

도움 좀 부탁드리겠습니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호