일단 배열을 4짜리를 만들고 stu[4]
문자열 입력을 1234 받을때랑 123받을때 두가지 경우가 있다고 치면
버퍼에 일단 각각 1234/n, 123/n 이 들어가고
거기서 /n을뺀 1234랑 123이 배열에 옮겨져서 들어가는게 맞음?
그럼 첫경우에는 [0][1][2][3]에 1234가 들어가있고
두번째경우에는 [0][1][2]에 123이 들어간거고
그리고 다음 scanf를 실행하면 버퍼에 남아있던 /n이 자동으로 입력이 되는거?
근데 둘다 버퍼에 남아있는게 같은거면 실행결과도 같아야되는데 왜
첫번째 경우에는 다음 scanf는 실행이 잘되지만
저장된 값출력해보면 아무것도 안나오고
두번째 경우에는 다음 scanf를 제끼는 현상이 나오고
대신 저장된값 출력하면 제대로 123이 출력되는 거야?
일단 내 원래의도는 첫번째 경우에서 다음 scanf도잘 실행되고 값도 제대로 입력되서 출력했을때 1234가 나오게하는건데
첫번째 경우에 배열공간이 4개인데 /n이 빠져서
값이 제대로 안나오는거야?
그렇다고 배열을 5개로 늘리면 두번째 경우와 같은 현상이 발생할꺼고
어케해야됨?
아 한가지 더 궁금한데
위에서 말한 scanf에서 받는게 학생번호고
두번째 로 scanf받는 값이 혈액형 문자열인데
그건또 제대로 받음 세번째 scanf를 제끼지도 않고
값도 제대로 들어갔다가 출력되고
뭐가 문제임?
문자열 입력을 1234 받을때랑 123받을때 두가지 경우가 있다고 치면
버퍼에 일단 각각 1234/n, 123/n 이 들어가고
거기서 /n을뺀 1234랑 123이 배열에 옮겨져서 들어가는게 맞음?
그럼 첫경우에는 [0][1][2][3]에 1234가 들어가있고
두번째경우에는 [0][1][2]에 123이 들어간거고
그리고 다음 scanf를 실행하면 버퍼에 남아있던 /n이 자동으로 입력이 되는거?
근데 둘다 버퍼에 남아있는게 같은거면 실행결과도 같아야되는데 왜
첫번째 경우에는 다음 scanf는 실행이 잘되지만
저장된 값출력해보면 아무것도 안나오고
두번째 경우에는 다음 scanf를 제끼는 현상이 나오고
대신 저장된값 출력하면 제대로 123이 출력되는 거야?
일단 내 원래의도는 첫번째 경우에서 다음 scanf도잘 실행되고 값도 제대로 입력되서 출력했을때 1234가 나오게하는건데
첫번째 경우에 배열공간이 4개인데 /n이 빠져서
값이 제대로 안나오는거야?
그렇다고 배열을 5개로 늘리면 두번째 경우와 같은 현상이 발생할꺼고
어케해야됨?
아 한가지 더 궁금한데
위에서 말한 scanf에서 받는게 학생번호고
두번째 로 scanf받는 값이 혈액형 문자열인데
그건또 제대로 받음 세번째 scanf를 제끼지도 않고
값도 제대로 들어갔다가 출력되고
뭐가 문제임?
제낀다는게뭔지 문제를잘모르겠지만 scanf 입력구조에대해 문자열 같은것도 궁금하면..문자열의 끝부분은 널문자로 끝나는걸로 받음
문자,문자열,정수,실수 입출력에관해서 일일이 다설명하긴뭐하니.. 찾아보면나올꺼양....scanf 입력끊기는거 gets 끊기는거 다기준이조금씩다름
버퍼 크기가 4인데 어떻게 1 2 3 4 \\n 이 들어가요 이미 5개인데
그러니까 스캔에프로 문자열 두개를 받는데 하나는 4자리의 학생번호 하나는 최대 두자리의 혈액형 1번은 배열이 stu[4]고 2번은 b-type[2]인데 첫번째 스캔에프에서만 값을 제대로 못읽고 그런 문제가 생김 혈액형은 잘받거든 A든 b든 o든 ab든 근데 학생번호는 자꾸 위에서 말한 문제들을 자꾸일으켜
학생 번호가 4자리라면 첨부터 배열 5개짜리로 만들어서 활용하세여
그래서 stu[4]를 stu[5]로 바꾸면 혈액형 받는 스캔에프를 제끼고 다음 프린트문이 바로 출력되
받기전에 전부 memset 0 해주면 4자리 넣고 바로 다음에 \\0이 있을테니 초기화하고 쓰는건 어때요