새소식

컴퓨터공학 💻/C

[ C언어 ] - 문자열 관련 함수

  • -
strlen()

strlen() 함수는 string array를 하나 받고 해당 string의 총 길이를 int형으로 출력해준다. 

 

 

strcpy()

 

strcpy() 함수는 어떤 string(문자 배열)을 다른 것에 복사하는 것이다. 

 

https://www.programiz.com/c-programming/library-function/string.h/strcpy

 

2번째 string으로 넘어온 것을 1번째 string에 복사하는 것이다.

 

 

char a 배열에 b 배열을 복사시킨 후 출력하면 a의 값이 b의 값으로 변경된 것을 볼 수 있다.

 

 

 

strcmp()

strcmp() 함수는 두 string을 비교하는 것이다. 

 

https://www.programiz.com/c-programming/library-function/string.h/strcmp
https://www.programiz.com/c-programming/library-function/string.h/strcmp

 

str1과 str2를 받고 두 string이 일치한다면 int형으로 return하게 된다 return 값이 0이라면 두 string이 일치한다는 뜻이며, 0이 아닌 음수나 양수라면 일치하지 않는다는 뜻이 된다.

 

 

Computer string과 Television string이 일치하지 않으므로 결과는 a! = b가 출력되는 것을 볼 수 있다.

if(cup == 0) 부분을 if(!box) 로 바꾸어 표현할 수도 있다.

 

 

 

strcat()

strcat() 함수는 어떤 string에 다른 string을 그 뒤에 붙여주는 기능이다. 

 

https://www.programiz.com/c-programming/library-function/string.h/strcat

 

 

a 배열에 b 배열을 붙여 더 커진 문자열을 만들 수 있다.

 

 

 

strchr()

 

 

strchr 함수는 넘겨진 첫번째 string에서 두번째로 넘겨진 char가 있는지 확인하고 있다면 그 위치를 출력해주는 기능이다. 첫번째 발견 후 해당 자리의 포인터를 return한다. return 형태도 char* 이다.

 

 

위치를 받을 char 포인터 *p를 만들어주고 strchr() 를 사용해 Fruits string에서 src에 들어있는 'f'를 찾도록 한다. 찾은 결과를 p에 저장되도록 한다. p를 출력해보면 "my first fruits was found in farm" 에서 f를 찾은 지점부터 return해주는 것을 볼 수 있다. (없으면 Null을 return 하게된다)

 

하지만 몇번째 인덱스에 f가 들어있는 것인지 출력상으론 알 수가 없다.

 

 

"my first ~ farm " 문자열 안에서 f 가 몇번째 자리에 위치하고 있는지 찾기 위해 p = strchr(Fruits, 'f') 에서 f를 Fruits 배열에서 찾도록 하고 나온 결과값을 p에 넣어준다. 그 결과값은 strchr를 통해 첫번째로 찾은 f가 위치한 부분부터 p에 들어갈 것이다. 

즉, 결과값인 "first fruits was found in farm" 부분이 현재 p에 저장되어 있다. 그 다음 f를 추가로 찾기 위해 반복문을 이용한다. p의 값이 NULL이 아니라면(= p에서 f를 또 찾았다면) 몇번째 자리에 위치하였는 지를 p - Fruits + 1 이라고 입력하여 알려준다. 

 

위의 그림에서 첫번째로 f를 찾고난 p의 현재 주소를 예를 들어 104 라고 했을 때 현재의 p의 주소(104)에서 Fruits의 시작점 주소(101)를 뺀 값 = 3이 되어 4번째 인덱스에 f가 있는 것이 맞지만 컴퓨터 공학을 모르는 다른 사람이 보기에 편의상 +1을 하여 4번째에 있다고 표기하는 것이다. (공백 포함)

 

다시 반복문으로 돌아가서 현재의 p값이 두번째 f를 발견하고 나온 결과 값 "fruits was found in farm" 이 되어 인덱스 값을 출력하고 다시 세번째 f를 발견하고 나온 결과 값 "found in farm" ··· 이런식으로 p가 NULL값이 될때까지 f를 찾는 것을 반복하게 된다. 

 

 

n이 붙은 string 함수

 

함수중 strncpy, strncat, strncmp 등 기존의 함수들에 중간에 n이 붙은 함수들이 있다. 이 함수들은 n, 즉 수를 지정해줄 수 있는 변수, 파라미터를 추가할 수 있다. 총 3개의 parameter를 넘겨줄 수 있게 된다.

 

strncat 함수를 이용해 10이라는 변수를 추가로 지정해줌으로써 str1에 str2를 붙이되 10자리까지만 적용을 하게 되는 것이다.

 

앞서 보았던 strncmp() 함수는 두 string의 앞의 지정한 수만큼만 비교를 하게 되는 함수이다.

또한 strrchr() 함수는 r은 reverse를 뜻하는데 기존의 strchr 함수가 앞에서부터 첫번째로 발견하는 결과값을 return했다면 strrchr 함수는 반대로 뒤에서부터 첫번째로 발견하는 결과값을 return하게 된다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.