이 프로그램에서는 사용자가 이름의 개수를 입력하면, strcpy() 함수를 활용하여 입력된 이름들을 알파벳 순서로 정렬합니다.
문자 배열(character array), 즉 문자들의 집합을 문자열(string)이라고 합니다.
문자열 선언
문자열 배열은 다음과 같이 선언합니다.
char stringname[size];
예를 들어, char string[50];은 길이 50자의 문자열을 의미합니다.
문자열 초기화
문자열은 두 가지 방법으로 초기화할 수 있습니다.
단일 문자 상수 사용
char string[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };문자열 상수 사용
char string[10] = "Hello";
문자열 접근
제어 문자열 "%s"를 사용하면 널 문자('\0')를 만날 때까지 문자열 전체에 접근할 수 있습니다.
strcpy() 함수
strcpy() 함수는 소스 문자열을 대상 문자열로 복사하는 데 사용됩니다. 이때 대상 문자열의 길이는 소스 문자열의 길이보다 크거나 같아야 합니다.
strcpy() 함수의 문법은 다음과 같습니다.
strcpy(대상 문자열, 소스 문자열);
예를 들어,
char a[50];
strcpy("Hello", a); // 출력: 오류 발생 (인자 순서가 잘못됨)
strcpy(a, "hello"); // 출력: a = "hello"첫 번째 예시처럼 대상과 소스의 순서가 바뀌면 오류가 발생하므로 주의해야 합니다.
알파벳 순 정렬 로직
이름을 알파벳 순서로 정렬하는 핵심 로직은 다음과 같습니다. strcmp() 함수로 두 문자열을 비교한 후, 순서가 올바르지 않으면 strcpy() 함수를 사용해 두 문자열의 위치를 서로 교환합니다.
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(strcmp(str[i],str[j])>0){
strcpy(s,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],s);
}
}
}전체 프로그램
다음은 이름을 알파벳 순서로 정렬하는 C 프로그램입니다.
#include<stdio.h>
#include<string.h>
main(){
int i,j,n;
char str[100][100],s[100];
printf("Enter number of names :\n");
scanf("%d",&n);
printf("Enter names in any order:\n");
for(i=0;i<n;i++){
scanf("%s",str[i]);
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(strcmp(str[i],str[j])>0){
strcpy(s,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],s);
}
}
}
printf("\nThe sorted order of names are:\n");
for(i=0;i<n;i++){
printf("%s\n",str[i]);
}
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter number of names: 5 Enter names in any order: Pinky Lucky Ram Appu Bob The sorted order of names is: Appu Bob Lucky Pinky Ram
입력된 5개의 이름이 Appu, Bob, Lucky, Pinky, Ram 순으로 알파벳 순서대로 정렬되어 출력되는 것을 확인할 수 있습니다.