문자 검색하기가 오류가 떠요 ..
딥레드
질문 제목 : 문자 검색하기가 오류가 떠요 ..stack around the variable ipt_char was corrupted. 라고 떠요
네이버에서 검색해보니까 배열 문제라고 하는데..
10분동안 머리 싸매도 답이 안나오네요;;
책에는 그냥 #define 쓰고 고정적으로만 찾기가 되어있어서
찾을 문자를 입력을 못하는게 답답해서 제가입력을 해서 찾기를 만들어봐야지 해서 하고있는데
이 오류를 못잡아서 못하고 있어요.. 근데 오류가 뜨더라도 찾고나서 오류가 뜨더라구요;
고수분들 도움 좀 부탁드릴께요 아래는 소스입니다질문 내용 :
#include stdio.h
#include string.h
void main()
{
char string[100];
char ipt_char;
char *ret;
printf(문자열 입력 : );
gets(string);
printf(찾을 문자 입력 : );
gets(&ipt_char);
do
{
ret = strchr(string, ipt_char);
if(ret == null)
{
puts(no have);
}
else
{
printf(%d번째에 위치\n, ret-string);
break;
}
} while(1);
}
-
도래솔
scanf_s는 해봤는데 그것도 안되더라구여.. getchar로 하니까 되네요 정말 감사합니다..
문자열로 인식하는게 문자였군여.. 어쩐지 ipt_char에서 계속 오류가 뜨더라 했더니..
정말 친절한 답변 감사드립니다 꾸벅 -
당나귀
저도 연구를 해본 결과, gets는 문자열 형태로 받을 수 있습니다. 즉 문자 하나를 쓴다고 해도 그 뒤에 널문자가 들어가서 문자열이 된다는 것입니다. 따라서 그 문자열을 char형인 변수가 받을 수 없기 때문에 나오는 오류입니다. 오류를 없애기 위해서는 gets대신 getchar나 scanf를 사용하시면 됩니다.