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(){..
버블 정렬(bubble sort)은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내며 정렬하는 방식이다. 12345678910111213141516public class Study { public static void main(String[] args) { int arr[] = {10, 50, 20, 33, 40}; for(int i=0; i
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..