strlen() 함수는 string array를 하나 받고 해당 string의 총 길이를 int형으로 출력해준다.
strcpy()
strcpy() 함수는 어떤 string(문자 배열)을 다른 것에 복사하는 것이다.
2번째 string으로 넘어온 것을 1번째 string에 복사하는 것이다.
char a 배열에 b 배열을 복사시킨 후 출력하면 a의 값이 b의 값으로 변경된 것을 볼 수 있다.
strcmp()
strcmp() 함수는 두 string을 비교하는것이다.
str1과 str2를 받고 두 string이 일치한다면 int형으로 return하게 된다 return 값이 0이라면 두 string이 일치한다는 뜻이며, 0이 아닌 음수나 양수라면 일치하지 않는다는 뜻이 된다.
Computer string과 Television string이 일치하지 않으므로 결과는 a! = b가 출력되는 것을 볼 수 있다.
if(cup == 0) 부분을 if(!box) 로 바꾸어 표현할 수도 있다.
strcat()
strcat() 함수는 어떤 string에 다른 string을 그 뒤에 붙여주는 기능이다.
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하게 된다.