소스실행시 한번에 종료까지 진행되는 현상.
조히
#include stdafx.h
#include stdlib.h
#include string.h
#include iostream
typedef struct student
{
char name[20];
int kor ,eng ,math , sum;
double avg;
}student;
student *det;
void fun(int n);
int n,menu;
void main()
{
printf( 전체 학생수를 입력하세요 : );
scanf_s(%d , &n);
det = (student*)malloc(sizeof(student)*n);
printf(%d 명의 학생정보를 입력하세요. \n , n);
for(int i=0 ; in; i++)
{
printf( 이름 : );
scanf_s(%s ,(det+i)-name) ,sizeof((det+i)-name);
printf(국어 : );
scanf_s(%d,&(det+i)-kor);
printf(영어 : );
scanf_s(%d,&(det+i)-eng);
printf(수학 : );
scanf_s(%d,&(det+i)-math);
(det+i)-sum=(det+i)-kor+(det+i)-eng+(det+i)-math;
(det+i)-avg=(double)(det+i)-sum/n;
}
printf(1. 이름순으로 출력\n);
printf(2. 성적순(오름차순)으로 출력\n);
printf(3. 성적순(내림차순)으로 출력\n);
printf(어떻게 출력하시겠습니까? : );
scanf_s(%d,&menu);
fun(menu);
for(int i=0;in;i++)
{
printf(%s %d %d %d %d %.2lf\n,(det+i)-name,(det+i)-kor,(det+i)-eng,
(det+i)-math,(det+i)-sum,(det+i)-avg);
}
free(det);
}
void fun(int m)
{
student temp = {NULL};
int i,j;
switch(m)
{
case 1:
for(i=0; in; i++)
{
for(j=1 ; jn; j++)
{
if(strcmp((det+i)-name,(det+j)-name) ==1)
{
temp= *(det+i);
*(det+i)=*(det+j);
*(det+j)=temp;
}
}
}
break;
case 2:
for(i=0;in;i++)
{
for(j=i+1;jn;j++)
{
if((det+i)-sum(det+j)-sum)
{
temp=*(det+i);
*(det+i)=*(det+j);
*(det+j)=temp;
}
}
}
break;
case 3:
for(i=0;in;i++)
{
for(j=i+1;jn;j++)
{
if((det+i)-sum(det+j)-sum)
{
temp=*(det+i);
*(det+i)=*(det+j);
*(det+j)=temp;
}
}
}
break;
default : printf(입력 오류);
break;
}
}
어찌 만지다 보니 네임스페이스 문제는 해결하고 컴파일 에러가 안나서 실행시켰는데요.
위 소스 실행시키면 이름을때 숫자 1글자 말고 2글자 혹은 영어 한글 적으면 그냥 소스 끝까지 실행되버리고 엔터누르면
종료됩니다. 왜 이런건지 가르쳐주세요...
프로그램은 Visual studio 2012 사용 중이라서 scanf_s 사용중입니다.