Skip to content

Instantly share code, notes, and snippets.

@nickroh
Last active April 19, 2021 12:15
Show Gist options
  • Save nickroh/444412658a059d6895c93581de5bbbfe to your computer and use it in GitHub Desktop.
Save nickroh/444412658a059d6895c93581de5bbbfe to your computer and use it in GitHub Desktop.
#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
char dic[100]; // 결과값 배열
int compare(const void *a, const void *b){ // 오름차순 비교 함수 구현
int num1 = *(int *)a; // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
int num2 = *(int *)b; // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
if (num1 > num2) // a가 b보다 작을 때는
return -1; // -1 반환
if (num1 < num2) // a가 b보다 클 때는
return 1; // 1 반환
return 0; // a와 b가 같을 때는 0 반환
}
bool checker(char a){
for(int i=0;i<strlen(dic);i++){
if(a == dic[i]){
return false;
}
}
return true;
}
void func(char arr[]){
int diccnt=0; // 결과값 길이
int len = 0; // 문자열의 길이
len = strlen(arr); // 문자열의 길이를 len 변수에 저장
qsort(arr, len, sizeof(char), compare);
for(int i=0; i<len; i++){
if(checker(arr[i])){
dic[diccnt]= arr[i];
diccnt++;
}
}
for(int i=0;i<diccnt;i++){
printf("%c ", dic[i]); // 문자열의 내용을 출력
}
}
int main(){
int len = 0; // 문자열의 길이
char s1[100]; // 크기가 10인 char형 배열을 선언
printf("Enter String: ");
scanf("%[^\n]s", s1); // 표준 입력을 받아서 배열 형태의 문자열에 저장
func(s1);
system("pause > nul");
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment