본문 바로가기
컴퓨터 공학/C, C++

[ C ] 문자열 함수 이해하기8_C스타일 문자열 정리

by hahehohoo 2020. 7. 23.
반응형

C언어 문법 C스타일 문자열, 출력 마무리 정리 

참고 자료: 포프 C 언매니지드 프로그래밍 강의 164

※ 마무리 강의 164번 내용 그대로 딕테이션 했습니다. "섹션 5 C스타일 문자열, 출력 (강의 No. 141-163)" 에 해당하는 정리 강의이며, 저는 " C 스타일 문자열 이해하기" 시리즈에 그 내용을 실었습니다. 하지만 저는 강의의 모든 내용을 다루지 않았기 때문에 이번 글에는 제가 언급하지 않은 부분이 있습니다.

 

■ C 스타일 문자열

문자열의 표현 방법

C 스타일의 문자열, 면접에서 많이 나오는 내용이죠. 포인터, 배열, 간단한 알고리즘을 테스트하기에 굉장히 좋은 부분이죠. C에서는 문자열 자체가 없어요. 기본적으로 문자열 형 자체가 없어요. 그래서 C는 배열을 통해서 표현하는데. 마지막에 널 문자를 넣어줘야 했다. 널로 끝나는 문자열 때문에 여러가지 다양한 알고리즘이 나왔다. 문자열 길이구하기, 문자열 비교하기 등이 나왔어요. 핵심은 문자열 한 번 훝는거로 할 수 있는게 굉장히 많다. 그래서 O(n) 작성한 알고리즘들 다봤어요. 

 

다양한 문자열 함수들

문자열 붙이기, 문자열 복사하기, 속에서 문자열 찾기, 문자열 토큰화하기 그런것까지 다봤어요. 어떤거는 const char * 이고, const * char 인지 그 차이점을 봤다. 문자열 길이 안맞으면 내가 소유하지 않은 메모리에 덮어쓰고 덮어쓰고 과제하거나 실습하거나 중간에 무슨 크래시 났다 그런거 대부분 그런 식으로 잘못된 메모리 덮어쓴 경우가 많아요. 

 

안전한 문자열 처리

그거 안전하게 처리하려면 크기를 확실히 알고 가야됩니다. 크기를 모르면 딱 정해진 크기까지 복사하거나 붙여넣어야 한다. 붙여넣었어. 그 다음에 뒤에 널 캐릭터들어가는지 반드시 확인해야 한다. 그럼에도 불구하고 안전한 문자열 처리를 못하는 그러한 함수도 있어서 안정 보장하려면 프로그래머가 잘 신경써야 한다. 그러면서도 C에 문자열 함수들은 추가로 메모리를 할당하지 않는 굉장히 특이하고 고마운 존재이다. 특히 스트링 토큰화할 때 많이 봤을 꺼예요. 씨스타일 문자열 이해안되는거 있으면 다시 공부해야되는거 맞아요. 이거 이해하려면 메모리 이해해야하고 스택에 어떻게 들어가는지, 포인터가 어떻게 작동하는지 알아야 됩니다. 그게 다 맞물려 가야되는거예요. 스트링이라는 거 여태까지 있던 자료형이랑 다르게 메모리에 촘촘히 저장되는 애라서 그래요. 

 

■ 출력

서식지정 출력

얘는 쉬워요. 서식이 뭔지 알아가는 과정이고 그걸 예쁘게 포맷하는 과정만 알면 되는 거기 때문에

printf(), fprintf(), sprintf()

재미있는거는 (위 세 개 함수)는 굉장히 다 비슷하다.  sprintf는 문자열에 쓰는 거라 조금 다를 뿐이고. 

서식 문자열

서식 지정 출력, 서식 문자열이니 엄청 봤죠. 이 과목을 공부하시는 동안에는 잘 알아두어야 될 것들이고, 과목 끝나고 나면 아 그런게 있구나 메뉴얼 찾아가면서 알아가면 되는 것들이예요.

 

기타 출력 함수

그리고 마지막에 아주 잠깐 기타 출력 함수 봤는데 2개 봤죠. 결과적으로 puts있고, putchar가 있는데 putchar기 셍각보다 쓸일이 있다

 

 

 

-----------------------------------

C언어 문법 총정리

목록 보러가기 

-----------------------------------

 

반응형


댓글