포인터 함수 10개 만들기(한성태) - aksrud/3kingOfGod GitHub Wiki
#include <stdio.h> //1
void swap(int* a, int* b); int strlen(const char* str); void toUpper(const char* str); //대문자로 출력 void toLower(const char* str); //소문자로 출력 void reverseStr(const char* str); //문자열 거꾸로 출력 void strCopy(char* dest, const char* src);//문자열 복사 void strCat(char* dest, const char* src); //문자열 이어 붙이기 int strComp(const char* a, const char* b); //문자열 비교 void removeSpaces(const char* str); //스페이스 제거
int main() { //두 변수 값 바꾸기 //int a = 5; //int b = 10;
//swap(&a, &b);
//printf("a = %d, b = %d\n", a, b);
//문자열 길이
//const char* str = "HanSungTae";
//printf("%d\n", strlen(str));
//대문자 출력
//toUpper("applE");
// 소문자 출력
//toLower("bANANA");
//문자열 거꾸로 출력
//reverseStr("apple");
//문자열 복사
//char a[10];
//strCopy(a, "apple");
//printf("%s", a);
//문자열 이어 붙이기
//char a[100];
//strCopy(a, "apple");
//printf("%s\n", a);
//strCat(a, " is Very Good");
//printf("%s\n", a);
//문자열 비교
//if (strComp("apple", "applE")) {
// printf("두 문자열은 같다.");
//}
//else {
// printf("두 문자열은 같지 않다.");
//}
//스페이스 제거
//removeSpaces("aa bb cc dd ee");
//버블 정렬
// int arr[10] = { 2, 3, 6, 7, 1, 4, 9, 8, 5, 0}; // void bubblesort(int* arr, int length);//버블 정렬 // for (int i = 0; i < 10; i++) { // printf("%d ", arr[i]); // } // printf("\n"); // bubblesort(arr, 10); // for (int i = 0; i < 10; i++) { // printf("%d ", arr[i]); // } // printf("\n"); //}
void bubblesort(int* arr, int length) { for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length - i - 1; j++) { if (arr[j] > arr[j+1]) { swap(arr+j, arr+j+1); } } } }
void removeSpaces(const char* str) { int len = strlen(str); for (int i = 0; i < len; i++) { char ch = str[i]; if (ch != ' '){ printf("%c", ch); }
}
printf("\n");
}
int strComp(const char* a, const char* b) { int len1 = strlen(a); int len2 = strlen(b);
if (len1 == len2) {
for (int i = 0; i < len1; i++) {
char ch1 = a[i];
char ch2 = b[i];
if(ch1 != ch2) {
return 0;
}
}
}
else {
return 0;
}
return 1;
}
void strCat(char* dest, const char* src) { int start = strlen(dest); int len = strlen(src);
for (int i = start; i < start + len; i++) {
dest[i] = src[i - start];
}
dest[start + len] = '\0';
}
void strCopy(char* dest, const char* src) { int len = strlen(src); for (int i = 0; i < len; i++) { dest[i] = src[i]; } dest[len] = '\0'; }
void reverseStr(const char* str) { int len = strlen(str); for (int i = len - 1; i >= 0; i--) { printf("%c", str[i]); } printf("\n"); }
//-32 void toUpper(const char* str) { int len = strlen(str); int ch; for (int i = 0; i < len; i++) { ch = str[i]; if (ch >= 'a' && ch <= 'z') { printf("%c", ch -32); } else { printf("%c", ch); }
}
printf("\n");
} //+32 void toLower(const char* str) { int len = strlen(str); int ch; for (int i = 0; i < len; i++) { ch = str[i]; if (ch >= 'A' && ch <= 'Z') { printf("%c", ch + 32); } else { printf("%c", ch); } } printf("\n"); }
int strlen(const char* str) { int len = 0; int i = 0; while (1) { char ch = *(str + i); if (ch == '\0') { break; } len++; i++; } return len; }
void swap(int* a, int* b) { int temp; temp = *a; *a = *b; *b = temp;