본문 바로가기
개발자

두들낙서 C/C ++ 22강, 23강 2차원 배열, 문자열 함수 strlen, strcpy, strcat, strcmp

by ⁖⁝‥ 2022. 6. 17.

1. 2차원 배열 선언

int main() {
	//세로 3칸 가로 4칸짜리 배열
	int arr[3][4] = {
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12}
	};
}

2. 2차원 배열 출력

int main() {
	//세로 3칸 가로 4칸짜리 배열
	int arr[3][4] = {
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12}
	};

	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 4; j++) {
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
}

3. 파스칼의 삼각형

1

11

121  2 = 2행 1열

1331

j == 0 j == i  -> 무조건 1

i 행 j 열 = [ i-1 j-1] +[i-1 j]

int main() {
	int p[10][10];

	for (int i = 0; i < 10; i++) {
		for (int j = 0; j <= i; j++) {
			if (j == 0 || j == i) {
				p[i][j] = 1;
			}
			else {
				p[i][j] = p[i - 1][j - 1] + p[i - 1][j];
			}
			printf("%d ", p[i][j]);
		}
		printf("\n");
	}
}

결과 :

4. 문자열 선언

#include <stdio.h>

int main() {
	char arr[100] = "Hello, world!"; //[ ] 안에 숫자 생략가능

	printf("%s\n", arr);
}
#include <stdio.h>

int main() {
	char arr[ ] = "Hello"; //[ ] 안에 숫자 생략가능

	printf(" 배열의 크기 : %d\n", sizeof(arr) / sizeof(char));
}

hello 글자수는 5개인데 

배열의 크기를 구해보면 6이 나온다.

왜냐하면 문자열 끝에 \0 널문자가 들어있기 때문이다.

 

5. 문자열 입력받는 방법

#include <stdio.h>

int main() {
	char s[100];

	scanf_s("%s", s);

}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	char s[100];

	scanf("%s", s);

	printf("%s\n", s);
}

scanf 오류가날때는 #define _CRT_SECURE_NO_WARNINGS 를 선언한다

 

6. 문자열의 길이 구하기 strlen 함수 

만약에 위에서 char str[100] 으로 선언 했다면

sizeof(str) / sizeof(char) - 1  하면 무조건 99만 나오게 된다.

hello의 길이를 구하려면 strlen 함수를 쓰면 된다.

int main() {
	char str[100] = "hello";

	int len;
	len = strlen(str);
	printf("문자열의 길이는 : %d", len);
}

결과 : 

7. strcpy 함수 : 문자열 카피

strcpy( A , B) ;  B 의 문자열을 A에 저장한다. A를 B로 바꾼다.

int main() {
	char str1[] = "hello";
	char str2[100];

	strcpy(str2, str1);

	printf("str2 의 값 : %s\n", str2);
}

8. strcat 함수 :  concatenate 사슬같이 잇다; 연쇄시키다

strcat(A, B) ; A 뒤에다가 B 문자열을 붙인다.

int main() {
	char str[100] = "Hello ";
	strcat(str, "World!");

	printf("%s\n", str);
}

결과 : 

9. strcmp 함수 : compare 비교하다 . 두 문자열을 사전 순으로 비교

strcmp( A , B) ;

-1  A - B  -> A가 사전순서로 앞에 있다는 뜻

0   A = B

1  B  - A  -> B가 사전순서로 앞에 있다는 뜻

int main() {
	char str1[] = "sample";
	char str2[] = "simple";

	int cmp = strcmp(str1, str2);
	printf("%d\n", cmp);
}

 

반응형

댓글