Mentoring

[멘토링][c언어] 다섯 번째 수업

seomj 2020. 5. 23. 16:01

문자열과 문자열 처리함수

  • 문자배열
  • 문자열 입/출력
  • 문자열 처리함수

 

문자배열

c언어에는 문자열을 저장하는 자료형이 존재 X

→배열을 이용

 

-초기화

1. 자료형 배열이름[배열크기] = "string";

 

2. 자료형 배열이름[] = "string";

 

3. 자료형 배열이름[] = {'s', 't', 'r', 'i', 'n', 'g', '\0'};

 

 

문자열 입/출력

-입력

 1. scnaf("%s", str); 

 2. gets(str); 

 

-출력

printf("%s", str);

 

 

문자열 처리함수

헤더 : <string.h>

 

1. strlen() : 문자열의 길이를 구하는 함수

 

2. strcpy() : 문자열을 복사하는 함수

 

   strcpy (받을 문자열, 복사할 문자열);

 

   ex) strcpy (str1, str2);

       : str1에 str2를 복사

 

2-1. strcpy_s()

 

      strcpy_s (받을 문자열, 최대 길이, 복사할 문자열);

      : 받을 문자열에 복사할 문자열을 최대 길이만큼 복사

        최대 길이가 복사할 문자열보다 작다면 에러 발생

 

3. strcat() : 두 개의 문자열을 하나의 문자열로 연결시키는 함수

 

   strcat (받을 문자열, 붙일 문자열);

 

   ex) strcat (str1, str2);

       : str1 뒤에 str2을 덧 붙임

 

  3-1. strcat_s()

 

       strcat_s (받을 문자열, 최대 길이, 붙일 문자열);

       : 받을 문자열 + 붙일 문자열이 최대 길이보다 크면 에러 발생

 

4. strcmp() : 두 개의 문자열을 비교

 

   strcmp (str1, str2)

   str1 > str2 : 1

   str1 < str2 : -1

   str1 == str2 : 0

 

   -대소문자 구분 : A<B<C< ... <Z<a<b<...<z

 

5. strstr() : 문자열 안에서 부분 문자열을 검색하는 함수

 

   strstr (문자열, 부분문자열);

int main(void) {

  char s[] = “black is color”;   //&s[10] == p

  char sub[] = “color”;

  char *p;

  p = strstr(s, sub);

  return 0;

}

#include  <stdio.h>
#include <string.h>

int main() {
	char str1[20];
	char str2[20] = "nothing";
	char sub[] = "icecream";
	char *p;
	char s[] = "cake";

	gets_s(str1, 20);

	p=strstr(str1, sub);
	strcat_s(p, 14, s);
	strcpy_s(str2, 14, p);

	if (strcmp(str1, str2) == 1) {
		printf("%s \n", str1);
		printf("%d \n", strlen(str1));
	}
	if(strcmp(str1, str2) == -1) {
		printf("%s \n", str2);
		printf("%d \n", strlen(str2));
	}

	return 0;
}

 

 



출처: https://blockdmask.tistory.com/391 [개발자 지망생]

출처: https://metalkim.tistory.com/139 [태사장의 하루]