#include <stdio.h>
int Compare ( char hana [ ], char dul [ ] )
{
int i;
for ( i = 0 ; ; i ++ )
{
if ( hana [ i ] < dul [ i ] )
return -1;
if ( hana [ i ] > dul [ i ] )
return +1;
if ( hana [ i ] == '\0' )
return 0;
}
}
int main(void)
{
char str5 [20];
char str6 [20];
for ( ; ; )
{
printf ("Enter a word > (order) ");
scanf ("%s", str5);
printf ("Enter a another word > (order) ");
scanf ("%s", str6);
Compare (str5, str6);
if ( Compare <= 0 )
printf ("%s, %s nn", str6, str5);
else if ( Compare > 0 )
printf ("%s, %s nn", str5, str6);
}
return 0;
}
ABCD ABDC 이렇게 두개 입력하면 제대로 정렬이 되거든요 ABCD가 먼저 출력되고 그 다음에 ABDC
근데 ABCD 랑 AB 두개 입력하면 AB ABCD가 출력되어야 하는데 ABCD AB 이렇게 출력되요.
이거 바꾸려면 어떻게 해야되죠?
프갤 성님들께 정중히 여쭤봅니다 ㅠㅠ
저지금필기체입니다
컴페어 함수에 이프 세번째꺼 널문자인데 표기가 안되네요;; 웹에선;
이프 하나의 아이가 널문자면 리턴 0
아 이게 문제인듯. int x = Compare(str5,str6); 같이 써야하는데 Compare <= 0같이 비교를하니까 Compare함수가 존재하니까 우측 ㅇㅇ
이거 두번째 인수가 0인지를 비교하지 않아서 생긴문제 if ( hana [ i ] == \'\\0\' || dul [ i ] == \'\\0\') return 0; 을 Compare 가장 위에 올리니까 해결됨.
요약하자면 두가지 실수가 있는데 하나는 Compare를 비교인자로 쓴것, 또하나는 널값 비교를 제대로 안한거
방금봐서 당장 이해되진 않는데 감사합니다. 다시 정독해볼게요. ㅠㅠㅠ