c언어 이론 고수님들 도와주십쇼 ㅠㅠ
-
게시물 수정 , 삭제는 로그인 필요
//1번 코드
#include <stdio.h>
void reverseSentence();
int main(void) {
printf("문장을 입력하시오: ");
reverseSentence();
return 0; }
void reverseSentence() {
char c;
scanf("%c", &c);
if (c != '\n') {
reverseSentence();
printf("%c", c); }
}
//2번 코드
#include <stdio.h>
int main(void){
char c;
scanf("%c", &c); //실행시키고 문자 a를 입력
if(c=='a')
printf("성공");
return 0;
}
1번은 입력한 문자열을 거꾸로 출력하는
재귀호출을 이용한 코드입니다.
그런데 1번 코드를 보고 의문이 들어서요.
1번코드를 실행하고 문자를 하나 입력할 때마다
엔터키 누른 게 아니라면 if문에 조건에 들어맞게 되고
reverseSentence()함수를 다시 호출하여 scanf가 반복적으로 실행되는 구조이더라구요.
그런데 제가 알기론 scanf로 변수에 입력값을 저장하려면 엔터키를 눌러줘야 되는 걸로 알고 있는데 문자열을 입력하고 엔터를 한번만 눌러눠도 입력한 문자 하나하나에 대해 if문이 실행되는게 왜 그런가 싶어서요...
만약 엔터키를 안눌러도 변수에 입력한 값이 저장된다면 제가 작성한 2번 코드도 실행했을 때,
a만 입력하고 엔터키 안 눌러줘도 if문에 조건에 맞으니 "성공"을 출력해야 하는데 또 그렇지는 않더라구요...
왜 이런 현상이 scanf라는 함수에서 동시에 일어날 수 있는지 scanf의 원리에 대해 설명해주실 분을 구합니다.
컴공 1학년이라 쉽게 부탁드리겠습니다.
선배님들 ㅠㅠ
#include <stdio.h>
void reverseSentence();
int main(void) {
printf("문장을 입력하시오: ");
reverseSentence();
return 0; }
void reverseSentence() {
char c;
scanf("%c", &c);
if (c != '\n') {
reverseSentence();
printf("%c", c); }
}
//2번 코드
#include <stdio.h>
int main(void){
char c;
scanf("%c", &c); //실행시키고 문자 a를 입력
if(c=='a')
printf("성공");
return 0;
}
1번은 입력한 문자열을 거꾸로 출력하는
재귀호출을 이용한 코드입니다.
그런데 1번 코드를 보고 의문이 들어서요.
1번코드를 실행하고 문자를 하나 입력할 때마다
엔터키 누른 게 아니라면 if문에 조건에 들어맞게 되고
reverseSentence()함수를 다시 호출하여 scanf가 반복적으로 실행되는 구조이더라구요.
그런데 제가 알기론 scanf로 변수에 입력값을 저장하려면 엔터키를 눌러줘야 되는 걸로 알고 있는데 문자열을 입력하고 엔터를 한번만 눌러눠도 입력한 문자 하나하나에 대해 if문이 실행되는게 왜 그런가 싶어서요...
만약 엔터키를 안눌러도 변수에 입력한 값이 저장된다면 제가 작성한 2번 코드도 실행했을 때,
a만 입력하고 엔터키 안 눌러줘도 if문에 조건에 맞으니 "성공"을 출력해야 하는데 또 그렇지는 않더라구요...
왜 이런 현상이 scanf라는 함수에서 동시에 일어날 수 있는지 scanf의 원리에 대해 설명해주실 분을 구합니다.
컴공 1학년이라 쉽게 부탁드리겠습니다.
선배님들 ㅠㅠ