[C언어] string.h 헤더파일

새로 배운 c언어 헤더파일들~ 정리해두면 좋을것같다.
string.h 헤더파일은 c언어의 문자열을 다룰 수 있는 헤더파일이다.

  1. strlen
  • 문자열의 길이 알아내기
    반환 : int type
char fruits[10][20] = { "apple", "banana", "peach", "orange", "grape" };

printf("%d\n", strlen(fruits));

strlen은 문자열의 끝 널 문자('\0')를 만났을 때까지 문자의 갯수를 세다 멈춘다.
위 코드를 실행했을 때는 ['a', 'p', 'p', 'l', 'e', '\0'] 널 문자를 만나,
5를 출력한다.

  1. strcpy
  • 복사하기
    반환 : 원 문자열의 시작 주소
char fruits[10][20] = { "apple", "banana", "peach", "orange", "grape" };
char fruits_copy[10][20];
strcpy(fruits_copy, fruits);
printf("%s", fruits_copy);

모두 복사되지 않고, 첫 번째 행에 있는 apple만 복사가 되었다.
마찬가지로 strcpy함수또한 널문자('\0')까지 복사를 한다.
따라서 apple까지만 복사가 된다.

모든 문자열을 복사하려면 다음과 같은 방법을 사용하면된다.

char fruits[10][20] = { "apple", "banana", "peach", "orange", "grape" };
char fruits_copy[10][20];
int fruits_len = sizeof(fruits) / sizeof(fruits[0]);
for (int i = 0; i < fruits_len; i++) {
	strcpy(fruits_copy[i], fruits[i]);
	printf("%s\n", fruits_copy[i]);
}

  1. strcmp(s1, s2)
  • 두 문자열을 사전 순으로 비교하여 결과 반환
    반환 : s1 == s2 -> 0
    s1 > s2 -> 1
    s1 < s2 -> -1
char fruits[10][20] = { "apple", "banana", "peach", "orange", "grape" };
char fruits2[10][20] = { "apple", "banano", "peaci", "so", "grape" };

printf("%d", strcmp(fruits2[0], fruits[0]));

fruits[0]에 "apple\0"과 fruits2[0]에 "apple\0"이 같기 때문에 0을 출력한다.

다음은 모든 문자열을 비교한 코드이다.

char fruits[10][20] = { "apple", "banana", "peach", "orange", "grape" };
char fruits2[10][20] = { "apple", "banano", "peaci", "so", "grape" };
int fruits_len = sizeof(fruits) / sizeof(fruits[0]);
for (int i = 0; i < fruits_len; i++) {
	printf("%d\n", strcmp(fruits2[i], fruits[i]));
}

fruits[1]에 "banana"와 fruits2[1] "banano" 예시를 들어보겠다.
strcmp(fruits2[1], fruits[1])
("banano", "banana") 에 다른글자인 "o"와 "a"
"o"(111)가 "a"(97)의 아스키코드보다 크므로 1이 반환된다.

strcmp(앞 문자열, 뒤 문자열)
앞에 문자열과 뒤 문자열을 비교했을 때
서로 다른 문자가 나오면 아스키코드를 비교하여 리턴한다.
앞 문자열에 문자의 아스키코드가 더 크다면 1을,
앞 문자열에 문자의 아스키코드가 더 작다면 -1을 반환한다.

  1. strcat(s1,s2)
  • 두 문자열의 결합
    반환 : 원문자열의 시작 주소
char fruit[20] = {"apple"};
char add_fruit[10] = {"banana"};

printf("%s", strcat(fruit, add_fruit));

s1 문자열에 s1과 s2의 결합된 문자열이 들어간다.

2차원배열도 결합하고 싶은데 너무 어렵다ㅠㅠ

좋은 웹페이지 즐겨찾기