2010-04-01 5 views
0

구조체에 저장된 '이름'을 기반으로 연결된 목록에 구조체를 배치하는 프로그램이 있습니다.첫 번째 문자로 문자열 정렬 [C]

목록에서 해당 위치를 찾으려면 이름이 삽입되는 이름이 알파벳 이전과 이후인지, 그 옆에있는 구조의 문자인지 알아야합니다.

이름은 내가 액세스 할 수있는 구조 안에 있습니다. 더 많은 작업을 원한다면 완전한 완성이 필요하지 않습니다. 첫 글자 만 괜찮습니다.

도움 주셔서 감사합니다.

답변

1

그것은 질문이 무엇인지 나에게 분명하지 않다, 그러나이 같은 작동합니다 :

if (node1->name[0] <= node2->name[0]) { 
    ... 
} else { 
    ... 
} 

이 이름의 첫 글자를 비교합니다 각 노드에서

1

두 개의 C 문자열, ab, 당신은 단순히 자신의 첫번째 요소를 비교할 수있는 경우 : ==이 여섯 관계 연산자 중 하나가 될 수 있습니다

*a == *b 

.

C 문자열의 경우 char*은 문자열의 첫 번째 문자를 가리 킵니다.

+0

NULL을 확인하는 것을 잊지 마세요. – Andrey

1

strcmp()은 두 개의 C 문자열을 비교하여 어떤 순서인지 또는 동일한 지 여부를 알려줍니다. 대소 문자를 신경 쓰지 않는다면 strcasecmp()을 사용할 수 있습니다. 이 함수는 반환 할 순서를 결정하는 데 필요한 것 이상으로 문자열을 비교하지 않습니다.

+0

strcasecmp는 표준 C가 아닙니다. – Arkku

1

목록을 반복하면서 각 요소를 전달하는 동안 수행 한 비교를 기반으로 올바른 위치에 새 요소를 삽입 할 수 있습니다. 가장 간단한 대소 문자를 구분하는 버전은 문자의 숫자 값 (예 : a[0] < b[0])을 비교하는 것만으로 수행 할 수도 있고, 대소 문자를 구별하지 않으려는 경우 일반적인 경우로 변환 할 수도 있습니다 (ctype.h 참조). 또는 전체 단어를 strcmp과 비교할 수 있습니다.

관련 문제