소중한 질문 감사드립니다.
1.실습과제 5에 실습 1번에서 7라인에 "%c",&bloodtype이라고 나와있는데 문자열이면 &를 써도 되고 생략해도 되는 건가요?
문자열의 경우 생략을 반드시 해주셔야 합니다.
그러나 컴파일러에 따라서 "&"를 넣어줘도 에러를 발생시키지 않고 결과를 보여주기도 합니다.
대표적인 경우가 저희가 사용하는 Dev C++의 경우인데, 아래와 같이 사용해도 에러를 발생하지 않고 정상적으로 결과를 반환해 줍니다.
하지만 올바른 표현은 아닙니다. 따라서 제가 박스친 부분과 같이 코드를 작성해 주셔야 합니다.
- 잘못된 표현
char name[20];
scanf_s("%s",&name,20); // scanf_s("%s",&name); ==> 이 경우조차 에러를 발생하지 않음
printf("%s ",name);
- 올바른 표현
2.bloodtype =getchar(); 뒤에 putchar(bloodtype)이면 getchar 앞에 bloodtype이 있으니까 putchar에 bloodtype을 써야되는건가요? 즉, bloodtype에 입력한거를 putchar에서 출력되도록 하는건가요?
getchar(); => 1글자를 입력받는 입력함수 입니다. 따라서 사용자로부터 1글자를 입력받은 후 변수 bloodtype 에 값을 저장합니다.
putchar( 출력변수 ); => 1글자를 출력해 주는 출력함수 입니다. 따라서 ( )안의 변수값에 담긴 결과값을 출력해 줍니다. 따라서 putchar(bloodtype); 이라고 표현하면 bloodtype에 담긴 값이 출력해 줍니다.