11 문자열과문자열함수 Section 1 Section 2 Section 3 문자열입출력문자열함수문자열정렬과명령행전달인자 1
무엇을학습할까요? 문자열입출력 문자열함수 문자열정렬과명령행전달인자 실전프로젝트 ( 연습문제풀이, 총 16 문제 ) 2
Fig 11.1 문자열배열의초기화 (p521) 3
Fig 11.2 배열과톱니형배열 (p529) 4
Fig 11.4 puts( ) 함수 (p553) 5
Fig 11.5 strcpy( ) 함수 (p569) 6
Fig 11.6 문자열포인터들의정렬 (p521) 7
Fig 11.7 명령행전달인자 (p583) 8
프로그래밍연습문제 p597 01 ( 공백 (blank), 탭, 개행을포함하여 ) 입력에서다음 n 개의문자들을읽고, 주소가전달인자로전달되는배열에그결과를저장하는함수를작성하고 테스트하라. 9
프로그래밍연습소스 01 1 2 10
프로그래밍연습소스 01 11
프로그래밍연습문제 p597 02 n개의문자들을읽은후에또는첫번째공백, 탭, 개행을만난후에 ( 어느것이먼저일어나더라도 ) 읽기를멈추도록연습 1 에서작성한함수를수정하고테스트하라. (scanf() 를사용하지마라.) 12
프로그래밍연습소스 02 13
프로그래밍연습소스 02 3 4 1 2 14
프로그래밍연습문제 p597 03 한라인의입력에서첫번째단어만읽어배열에저장하고, 나머지는버리는함수를작성하고테스트하라. 선두의화이트스페이스는건너뛰어야한다. 여기서단어는스페이스, 탭, 개행이들어있지않는연속된문자들을말한다. 15
프로그래밍연습소스 03 16
프로그래밍연습소스 03 1 2 3 4 17
프로그래밍연습소스 03 1 2 18
04 프로그래밍연습문제 p597 번에있는설명을참조하라. 프로그래밍연습문제3 에서설명한함수를, 읽을수있는최대문자수를지정하는제2 매개변수를받아들이는것을제외하여작성하고테스트하라. 19
프로그래밍연습소스 04 20
프로그래밍연습소스 04 21
프로그래밍연습소스 04 22
프로그래밍연습소스 04 23
0 4 witch 를사용하여연습 05 를다시작성하라. 프로그래밍연습문제 p597 첫번째함수매개변수로지정하는문자열에서두번째함수매개변수로 지정하는문자가처음나타나는위치를찾는함수를작성하고테스트하라. 찾는데성공하면, 함수는그문자를가리키는포인터를리턴한다. 그문자열에서그문자를찾지못하면함수는널포인터를리턴한다. ( 이것은라이브러리함수 strchr() 가수행하는기능과같다.) 루프를사용하여함수에입력값들을반복적으로제공하는 완전한프로그램을만들어작성한함수를테스트하라. 24
프로그래밍연습소스 05 25
프로그래밍연습소스 05 26
프로그래밍연습소스 05 27
프로그래밍연습소스 05 28
프로그래밍연습문제 p597 06 하나의문자와하나의문자열포인터를두개의함수매개변수로사용하는 is_within() 함수를작성하라. 그함수는문자열안에그문자가들어있으면 0이아닌값 ( 참 ) 을리턴하고, 그렇지않으면 0( 거짓 ) 을리턴한다. 루프를사용하여함수에입력값들을반복적으로제공하는완전한프로그램을만들어작성한함수를테스트하라. 29
프로그래밍연습소스 06 30
프로그래밍연습소스 06 31
프로그래밍연습소스 06 32
프로그래밍연습소스 06 33
프로그래밍연습문제 p598 07 strncpy(s1, s2, n) 함수는 s2에서 s1으로정확히 n개의문자들을복사한다. 필요하면 s2를자르거나여분의널문자들로채운다. 타깃문자열은 s2의길이가 n이거나그이상이면널문자로종료되지않을수도있다. 이함수는 s1을리턴한다. 이와동일한기능을수행하는함수를직접작성하고 mystrncpy() 라고부르라. 루프를사용하여함수에입력값들을반복적으로제공하는완전한프로그램을만들어작성한함수를테스트하라. 34
프로그래밍연습소스 07 35
프로그래밍연습소스 07 36
프로그래밍연습문제 p598 08 두개의문자열포인터를전달인자로사용하는함수 string_in() 를작성하라. 두번째문자열이첫번째문자열안에있으면, 포함된문자열이시작되는위치의주소를리턴한다. 예를들어, string_in("hats", "at") 은 hats에있는 a의주소를리턴한다. 그렇지않다면널포인터를리턴한다. 루프를사용하여함수에입력값들을반복적으로제공하는완전한프로그램을만들어작성한함수를테스트하라. 37
프로그래밍연습소스 08 38
프로그래밍연습소스 08 39
프로그래밍연습소스 08 40
프로그래밍연습문제 p598 09 문자열의내용을거꾸로뒤집은문자열로대체하는함수를작성하라. 루프를사용하여함수에입력을반복적으로제공하는완전한프로그램을 만들어작성한함수를테스트하라. 41
프로그래밍연습소스 09 42
프로그래밍연습소스 09 43
프로그래밍연습소스 09 44
프로그래밍연습소스 09 45
프로그래밍연습문제 p598 10 문자열을전달인자로취하여, 그문자열에있는스페이스들을모두제거하는함수를작성하라. 빈라인을입력할때까지라인들을반복하여읽는루프를사용하는프로그램을작성하여그함수를테스트하라. 프로그램은그함수를각입력문자열에적용하여, 그결과를표시해야한다. 46
프로그래밍연습소스 10 47
프로그래밍연습소스 10 48
프로그래밍연습소스 10 49
프로그래밍연습문제 p598 11 문자열을 10개까지또는 EOF를만날때까지읽는프로그램을작성하라. 둘중어느것이먼저일어나더라도읽기를멈춘다. 이프로그램은사용자가메뉴로다음과같은 5가지선택권을제공해야한다 : 문자열들의원본리스트를출력한다, 문자열들을 ASCII 조회순서로출력한다, 문자열들을길이가커지는순서로출력한다, 문자열들을첫단어의길이가커지는순서로출력한다. 프로그램을종료한다. 이프로그램은사용자가종료를선택할때까지계속실행되어야한다. 물론이프로그램은메뉴에제시된작업을실제로수행해야한다. 50
프로그래밍연습소스 11 51
프로그래밍연습소스 11 52
프로그래밍연습소스 11 53
프로그래밍연습소스 11 54
프로그래밍연습소스 11 55
프로그래밍연습소스 11 56
프로그래밍연습소스 11 1 57
프로그래밍연습소스 11 1 58
프로그래밍연습소스 11 59
프로그래밍연습소스 11 1 60
프로그래밍연습소스 11 61
프로그래밍연습소스 11 62
프로그래밍연습문제 p599 12 EOF 를만날때까지입력을읽어서단어수, 대문자수, 소문자수, 구두점수, 숫자수를보고하는프로그램을작성하라. ctype.h 계열의함수들을사용하라. 63
프로그래밍연습소스 12 64
프로그래밍연습소스 12 1 2 3 4 65
프로그래밍연습소스 12 66
프로그래밍연습문제 p599 13 명령행전달인자들을역순으로에코하는프로그램을작성하라. 예를들어, 명령행전달인자들이 see you later 로주어졌다면, 프로그램은 later you see 라고출력해야한다. 67
프로그래밍연습소스 13 68
프로그래밍연습문제 p599 14 명령행으로동작시키는멱승법 (power-law) 프로그램을작성하라. 명령행의첫번째전달인자는어떤멱승을구할 double 형밑수가되고, 두번째전달인자는정수형지수가되어야한다. 69
프로그래밍연습소스 14 70
프로그래밍연습문제 p599 15 문자분류함수들을사용하여 atoi() 와동일한기능을수행하는함수를작성하라. 이버전의경우입력문자열이순수한수가아니라면 0의값을반환하도록하라. 71
프로그래밍연습소스 15 72
프로그래밍연습소스 15 73
프로그래밍연습소스 15 74
프로그래밍연습소스 15 75
프로그래밍연습문제 p599 16 파일끝에도달할때까지입력을읽고, 그것을디스플레이에에코하는프로그 램을작성하라. 프로그램은다음과같은명령행전달인자들을인식하고그기 능을구현해야한다. -p 입력을그대로출력한다 -u 입력을모두대문자로변경하여출력한다 -l 입력을모두소문자로변경하여출력한다또한명령행전달인자가없다면, 프로그램이 -p 전달인자와사용된것처럼실행되게하라. 76
프로그래밍연습소스 16 77
프로그래밍연습소스 16 78
프로그래밍연습소스 16 79
KeyPoint 핵심개념 char fruit[3][7] = { Apple, Pear, Orange }; char *fruit[3] = { Apple, Pear, Orange }; char words[81]; gets(words); // 개행문자 ( n ) 제거 fgets(words, 81, stdout); // 개행문자 ( n ) 포함 strlen(words); strcat(words, Concatenation ); strcmp(a, b);, strcpy(dest, source);
이번학습에이어! 다음강의내용 제 12 장저장클래스, 연계, 메모리관리, 연습문제
Thank you! 82