strchr strstr 문자 위치 찾기 이번에는 문자, 문자열 위치 찾는 함수를 알아보자.strchr strstr 함수를 사용하기 위해서는 string.h 파일을 include 해야 된다.strchr strstr 함수는 메모리 주소를 반환을 해주고 문자, 문자열을 찾아주는 함수이다.사용법을 한번 보자. 12345678910111213141516#include #include main(){ char array1[50] = "Good-morning, Good-afternoon, Good-evening"; char array2[10] = "morning"; char *p1 = NULL, *p2 = NULL; p1 = strchr(array1, 'a'); p2 = strstr(array1, array2); p..
strcat strncat 문자열 합치기 이번에는 문자열 합치기에 대해서 알아보겠다. strcat strncat 함수가 있는데 이 함수를 사용하기 위해서는 string.h 헤더 파일을 include 해줘야 한다. 사용법은 이러하다. 123456789#include #include main(){ char array1[10] = "Good"; char array2[10] = "Look"; strcat_s(array1, sizeof(array1), array2); puts(array1);}Colored by Color Scriptercs GoodLock 먼저 함수를 사용하기 위해 string.h 파일을 include 해주고 각 배열에 데이트를 넣어줬다. 그리고 strcat(받을 문자열, 대상 문자열..
strlen 문자열 길이 이번에는 strlen 문자열 길이 알아내는 법을 알아보겠다.strlen 함수를 쓰기 위해서는 string.h 파일을 include 해야 된다.이 함수 사용법을 알아보자. 1234567891011#include #include int main(){ char array1[] = "Hello C"; char array2[] = "안녕하세요"; printf("영문 문자열의 길이 : %d \n", strlen(array1)); printf("한글 문자열의 길이 : %d \n", strlen(array2)); return 0;}Colored by Color Scriptercs 영문 문자열의 길이 : 7한글 문자열의 길이 : 10 string.h 헤더 파일을 include 해주고..
파일 분할 컴파일 이번에는 헤더파일과 소스파일 여러개를 가지고 파일 분할 컴파일을 해보겠다.human.c | str.c | Study.c | Human.h | str.h 파일을 준비하자. 일단 헤더파일 안에는 전역 변수 구조체, 공용체, 열거형 함수의 원형 일부 특정한 함수 (인라인 함수) 매크로 이렇게 넣는것을 추천한다. C코드를 집어넣도 되긴 하는데 별로 권장하고 싶지는 않다. 12345678910enum {MALE, FEMALE};struct Human{ char name[20]; int age; int gender;}; struct Human Create_Human(char *name, int age, int gender);int Print_Human(struct Human *human);cs h..
strcmp, strncmp 문자열 비교 문자열 비교에 대해서 알아보겠다.문자열 비교 함수에는 strcmp, strncmp 함수가 있다 이 함수들을 사용하려면 string.h 파일을 include 해야 된다.strcmp 함수의 반환값에 대해서 먼저 알아보자. strcmp는 ASCII 코드로 비교한다.strcmp("aos", "super"); | strncmp("aos", "super", 3)이라고 했을 때, 첫 번째 인자가 더 크면 양수를 반환하고두 번째 인자가 더 크면 음수를 반환하고내용이 같으면 0을 반환한다.strncmp는 마지막 인자 값이 원하는 데이터만큼만 비교를 한다. 소스를 보면서 이해를 하자. 12345678910111213141516171819#include #include main(){..
C언어 별찍기 문제 : N줄인 삼각형을 표시한다. 단, 사용자로 부터 임의의 N을 입력받는다 input : 3 output : * *** ***** 1234567891011121314#include int main() { int i, j, k, n; printf("몇줄을 만들거야? : "); scanf_s("%d", &n); for(i=0; i i; j--) printf(" "); for(k = 0; k i로 해줬다. 현재 j=2다. 증감값도 1씩 줄어들고 있다.띄어쓰기를 2칸 해줘야 하니, j를 i (i=0)까지 돌려야 된다. 그럼 for문은 두번 돌아간다. 세번째 for문은 *을 출력해주는거다. 2*j+i를 해준 이유는 첫번째 루틴 for문이 돌아갈때 j값은 0이다.(위의 for문에서 j가 -를 해주..
소인수 분해 알고리즘 C언어 알고리즘 중에 소인수 분해 알고리즘 문제를 봤다.과정은 간단하다 변수를 생성하고 사용자 임의로 입력을 받아서 반복문을 돌려주고 구하면 된다.문제 : 임의의 자연수 N을 입력받아서 N을 소인수 분해 한 결과를 출력하여라. input : 18 output : 2 * 3 * 3 12345678910111213#include int main(){ int number, i; scanf_s("%d", &number); for (i = 2; i
strcpy_s, strncpy_s 문자열 복사 이번에는 문자열 복사함수 strcpy_s, strncpy_s에 대해서 알아보겠다. strcpy_s, strncpy_s 함수는 string.h 헤더파일에 포함되어 있으니 헤더파일을 include 해줘야 한다. 123456int main(){ char arr[20]; arr = "ABCD";}cs 이렇게 하면 오류가 난다. arr은 배열의 시작주소인데 시작주소에 문자열을 넣으니까 말이다 이 오류를 해결하기 위해 strcpy_s 함수가 있다. 123456789#include #include int main(){ char arr[20]; strcpy_s(arr, sizeof(arr), "ABCD"); printf("%s", arr);}Colored by Color..
포인터 완전정복 이글은 이해하기 전에 코드 분석을 할줄 알아야 이해가 된다. 코드 분석도 실력이니 모두 코드 분석을 해야된다. 일단 배우기 전에 알아야 할 것이 있다. 배열 이름은 배열의 시작 주소 라는 것이다.. 그게 무슨 말이야?? 한번 코드를 보고 분석을 해보면 된다. 1234567891011#include int main(){ int array[3] = { 10, 20, 30 }; printf("%x %x %x\n", array, array + 0, &array[0]); printf("%x %x\n", array + 1, &array[1]); printf("%x %x\n", array + 2, &array[2]); return 0;}Colored by Color Scriptercs 5..
C언어 배열 주소값과 값 표현방식 이번에는 배열 주소값과 값 표현 방식에 대해서 알아보겠습니다.배열 주소값과 표현 방식이 너무나 많이 있습니다.이것을 쉽게 정리해서 보여드리도록 하겠습니다. 12345678910111213141516171819202122232425262728293031#include int main(){ int array[3] = { 10,20,30 }; int arr[2][2] = { 10,20,30,40 }; //1차원 배열 주소값 표현 방법 printf("%x %x %x\n", array + 0, array + 1, array + 2); printf("%x %x %x\n", &array[0], &array[1], &array[2]); printf("\n"); //1차원 배열 값 표현..
버블 정렬(Bubble Sort) 버블 정렬(Bubble Sort)은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내며 정렬하는 방식이다. 1234567891011121314151617181920212223242526272829#include int main(){ int arr[] = { 10,30,55,27,19 }; int i, j; printf("정렬 전\n"); for (i = 0; i 0; i--) { for (j = 0; j arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } printf("%d, %d, %d, %d, %d\n", arr[0], arr[1], arr[2], arr[3], ar..
C언어 포인터 쓰는 이유?? 가장 쉬운 설명 처음에 포인터를 공부할 때 왜 포인터를 쓰지?? 쓰는 이유가 뭘까??이걸 배워야 되나?라고 생각을 했다.포인터를 배우면서 자꾸 포인터가 왜 쓰일까라고 질문만 했다.근데 이 밑에 글을 보면서 한 번에 이해가 갔다 포인터를 사용함으로써 복사본을 만들지 않고 주소만 알려줌으로 해서용량 및 처리시간에 이득을 볼 수 있습니다.메모리가 한정적이거나 처리시간이 중요한 시스템에서 사용할 경우 도움이 되겠지요.예를 들어 다음과 같은 코드가 있을 때 12345678910111213141516typedef struct adc{ int a[10000]; char b[10000];}S_ABC; void call_you(S_ABC abc_struct_2){ /* ~~~~ */} voi..