게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 왕초보 질문드려봅니다.
게시물ID : programmer_15231짧은주소 복사하기
작성자 : 수지파파
추천 : 1
조회수 : 695회
댓글수 : 2개
등록시간 : 2015/12/30 11:07:15
기억하실지 모르겠지만 11월에 취미로 공부해보겠다고 하고 이제 한달 남짓 열혈C 프로그래밍으로 짬짬이 독학을 해보는 아잰데요..

level...noon 같은 좌우대칭 회문을 판정하는 도전 문제를 풀다가
문자열의 길이를 알아야 하므로 그에 해당하는 함수를 만드려고 하다가 막혀서 이틀을 고민했습니다.

검색해보니 다른 헤더를 포함시키면 간단히 기본함수를 써서 해결할수 있다는 건 알게 되었지만 문제 의도가 그게 아니라서

=================================================================
#include <stdio.h>
int Stlen(char * str)   //문자열 길이 측정 함수
{
int i;
for (i = 0;; i++)
{
if (str[i] == 0)
return i;
}
}

int main(void)
{
int len,i;
char string[30];
printf("영단어를 입력하세요:");
scanf_s("%s", &string,sizeof(string));
len = Stlen(string);
for (i = 0; i <= (len/2); i++)
{
if (string[i] != string[len - i-1])
{
printf("%s는 회문이 아닙니다.\n",string);
return 0;
}
}
printf("%s는 회문입니다.\n", string);
return 0;
}
========================================================================

이런 식으로 작성했는데 녹색 부분을 처음에는 sizeof() 없이 했었습니다.
====> scanf_s("%s", &string); 이렇게요.

그런데 아무레 해봐도 문자열길이 숫자가 이상하게 나오는 겁니다. 4글자 단어를 쳤는데 67...이런 식으로요.
이틀 고민하면서 이렇게 고쳐보고 저렇게 고쳐보고 해도 소용없었는데,
덜렁 sizeof 붙인거만으로 갑자기 잘 작동이 되는 겁니다.

여태하면서 sizeof 안붙여도 경고는 있었지만 컴파일은 잘 되었고,
결과가 이렇게 다르게 나온적은 없었는데
대체 이유가 무엇인지 궁금합니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호