C언어~앞뒤바꿔도 똑같은 문자 찾기 질문요ㅠㅠ

질문 제목 : C언어~앞뒤바꿔도 똑같은 문자 찾기 질문요ㅠㅠ질문 요약 :문자열 길이 계산 함수에서 왜 자꾸 값이 33이 반환되는지 모르겠어요;질문 내용 :
다 안보셔두 되구요~ munl함수에서 자꾸 33이 반환되는지 모르겠어요ㅠㅠ꼭좀 도와주세요 5시간째 삽질중이에용

#includestdio.h
int munl(int *pm); // 문자열 길이를 계산하는 함수;
int main(void)
{
char mun[100]; //문자열 받는 배열
char *p=mun; // 포인트로배열 주소 할당
int lo, i, c=0;
printf(입력 ㄱㄱ \n);
scanf(%s, mun);
lo=munl(mun); // ------ 이부분이 문제에염;;lo값에 문자열 길이를 받으려고 하는데 얼토당토않은 33값이 계속 나오네요;
printf(%d \n, lo);
if(lo%2==0)
{
for(i=0; i((lo/2)-1); i++)
if(p[i]==p[lo-i-2])
c++;
}
else
{
for(i=0; i(lo/2); i++)
if(p[i]==p[lo-i-2])
c++;
}
if(c==i)
printf(회문임!!\n);
else
printf(회문아님!!\n);
return 0;
}
int munl(int *pm) // 문제의 함수!!!
{
int i;
for(i=0; i100; i++)
{
if(pm[i]==0)
break;
}
return i;
}

댓글 6

  • 윤비 2026.07.01

    멀티 바이트 체계에서는 1, 2바이트 문자 단위로 사용되기 때문입니다.
    int형 포인터로 인자를 받게 되면, 비교 또한 4바이트 단위로 끊어지게 때문에
    제대로 된 비교가 불가능합니다.

    \가나다라a.\ (10바이트, NULL까지 11바이트)
    이 경우, int형 포인터로 4바이트 씩 끊게 되면, 한번 인덱스를 비교해보겠습니다.
    0 - 4 - 8 - 12
    NULL 데이터의 인덱스는 10입니다.
    그런데, 비교하기 위해 도달할 수가 없습니다.
    왜나햐면, in

  • 나려 2026.07.01

    지덕수다님~감사해요+_+ 매개변수가 int형이라 그런거군요ㅠㅠ;근데 왜 int형일때는 33이 반환되는지아세요?알려주세요ㅠㅠ

  • 연블랙 2026.07.01

    int munl(char *pm) // 문제의 함수!!!
    {
    int i;
    for(i=0; *(pm+i); i++);
    return i;
    }

  • 친화력 2026.07.01

    수다님~ㅋ감사해요+_+ㅎ 근데 왜 int형일때는 33이 반환되는지아세요?알려주세요ㅠㅠ

  • 옆집꼬마야 2026.07.01

    mun은 char 배열인데, munl 함수에서는 int 포인터로 받고 있군요.

  • 베레기 2026.07.01

    문자열 길이를 받으시려면 strlen함수를 쓰시면 간단한데요?
    그리고 munl 함수는 널문자를 만나면 리턴하여 문자열 길이를 계산하는 걸로 보이는데..
    이 함수도 문제는 없는거 같네요;;

C언어 다른 글

목록