#include <stdio.h>
#include <string.h>
int main()
{
char password[4] = {1,2,3,4};
char pw_try[4] = { };
int a;
for (a = 0; a < 3; a++)
{
printf("%d번째 숫자 : ", a + 1);
scanf("%c", &pw_try[a]);
}
if (!strcmp(password, pw_try))
{
puts("두 비밀번호는 동일하다.\n");
}
else
{
puts("두 비밀번호는 다르다.\n");
}
return 0;
}
두 배열 자체를 비교하고 싶었는데
for문에서 자꾸 2번째랑 4번째를 건너뜀
돌거같음
if( strcmp(password, pw_try) != 0 )
strcmp내부에 password[a] - 164260의 휘발성 계정
그리고 a<3이면 0 1 2밖에 안돌음 - 164260의 휘발성 계정
사실 그리고 strcmp는 널이 있어야 올바르게 행동할걸용 - 164260의 휘발성 계정
strcmp 는 주소로 판단하는거 아님? 그리거 널은 배열에 빈공간이 있을때 필요한거아님?
scanf %c 는 쓰지마.
pw_try[ a ] = getchar(); 해라 차라리.
for문에서 2번째가 걍 넘어가버림 a<3은 고침
scanf %c 문제라고
&password[a]가맞겠네여 근데 c의 스트링은 단순 char배열이 아니라 char배열 끝에 \\0이 있어야 함 - 164260의 휘발성 계정
아니면 scanf 아래 getchar(); 이거 하나 넣어놓든지.
입력 처리되고 남은 엔터가 계속 문제 될거임.
책에 scanf는 %s을 쓰면 뒤에 널문자 붙여준다는데 %c에도 그럼?
%c 는 안그럼.
그럴리가 없자나여 한칸에 문자하고 널까지 무슨 수로 집어넣음 - 164260의 휘발성 계정
대신 문자만 받아들이고 엔터는 남겨뒀다가
그다음 %c 가 꿀꺽 해버리지.
그래서 니코드 짝수가 동작 안하는거임.
사실은 엔터를 입력 받은거고.
숫자만 집어넣을때는 안그러던데 왜이럼