1 / 44

C 언어 및 실습 C Language and Practice

C 언어 및 실습 C Language and Practice. Chap 9. 문자열과 문자열 함수. 단원의 개요. 단원의 학습목표. 학습 유의점. 1. 문자 배열 , 문자 포인터 , 문자열의 배열 등을 이용한 정의 방식에 대해 알아본다 . 2. 문자열 배열의 내부 구성과 연산 방법 을 이해하고 , 포인터와의 관계를 파악한다. 1. 문자열의 배열을 처리할 때는 포인터와 유사하지만 , 배열은 상수이고 , 포인터는 변수 라는 사실을 이해한다 .

khanh
Download Presentation

C 언어 및 실습 C Language and Practice

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C언어 및 실습C Language and Practice Chap 9. 문자열과 문자열 함수

  2. 단원의 개요 단원의 학습목표 학습 유의점 1. 문자 배열, 문자 포인터, 문자열의 배열 등을 이용한 정의 방식에 대해 알아본다. 2. 문자열 배열의 내부 구성과 연산 방법을 이해하고, 포인터와의 관계를 파악한다. 1. 문자열의 배열을 처리할 때는 포인터와 유사하지만, 배열은 상수이고, 포인터는 변수 라는 사실을 이해한다. 2. 포인터 개념을 통해 문자열을 처리하는 예제 프로그램을 이해한다. 단원의 학습계획 사용된 함와 선행처리기 1. 문자열의 개념 문자열 정의 방식들을 설명한다. 2. 문자열의 초기화 문자열 초기화 방법을 설명한다. 3. 문자열과 포인터 문자열과 포인터를 연관시켜 활용하는 방법을 설명한다. 4. 명령행 인자 명령행 인자의 구성 요소를 이해 시킨다. 5. 문자열 처리함수 헤더 파일 string.h에 내장되어 있는 함수에 대해 설명한다. • 함 수 : strcpy() : 형 식 : strcpy(char *, const char *); gets( ) : 형 식 : gets(char *); puts( ) : 형 식 : puts(char *); getchar( ) : 형 식 : intgetchar(); getche( ) : 형 식 : intgetche(); getch( ) : 형 식 : intgetch();

  3. C -> 1 byte \0 C -> 2 bytes 문자열(String)의 개념 • 문자열은 Null문자(‘\0’(= ‘\0’))로 끝나는 문자형 배열 • 문자열을 위한 특별한 데이터 형은 없음 • “C Programming” -> 문자열(14 bytes) : 데이터형char인 배열을 사용 • 문자와 문자열과의 차이 • ‘C’ • “C” g a m m C P r o r i n g \0 • Null(\0) 문자 • 문자열의 끝을 표시 • ASCII 코드가 0(출력되지 않는 문자) 자료형이 char인 문자 상수이다. 단일 인용부호(‘ ’) -> 문자 #include <stdio.h> void main() { char ch = 'C'; char cha[ ] ="C"; char chb[ ] = "C Programming"; printf("문자형ch의 크기= %d \n", sizeof(ch)); printf("문자열 cha 의 크기= %d \n\n", sizeof(cha)); printf("문자열 chb의 크기= %d \n\n", sizeof(chb)); } 크기는? 문자가 하나라도 문자열 상수이다. 이중 인용부호(“ ”) -> 문자열 크기는?

  4. 문자열의 개념 • 문자열은 Null문자(‘\0’)로 끝나는 문자형 배열 • 문자열을 저장 배열을 선언 일반 형식 : • char str[100] => 99개 까지의 문자를 저장할 수 있는 문자형 배열 (99문자 + ‘\0’(Null문자)) • 문자열 “COMPUTER”를 저장하기 위한 배열의 크기는? • ‘C’, ‘O’, ‘M’, ‘P’, ‘U’, ‘T’, ‘E’, ‘R’ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ => char str[ 8 ] : 틀림 ( X) • ‘C’, ‘O’, ‘M’, ‘P’, ‘U’, ‘T’, ‘E’, ‘R’ + ‘\0’=> char str[ 9 ] :맞음 (O ) • 문자열 “ENGINEER”를 저장하기 위한 배열의 크기는? • ‘E’, ‘N’, ‘G’, ‘I’, ‘N’, ‘E’, ‘E’, ‘R’ + ‘\0’ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ => charstr[ 9 ]맞음 ( O ) #include <stdio.h> void main() { char str[9]="COMPUTER"; // char str[8]="COMPUTER"; 로 선언하여 수행해보세요? printf("문자열 str의 크기: %d \n", sizeof(str)); printf("str의 저장내용의 출력 : %s\n\n",str); } 표기법 : char 배열명[배열크기]; ex) char str[100]; ⑨

  5. 문자열의 초기화 • 문자열의 초기화 • 문자열을 저장할 문자형 배열을 정의함과 동시에 초기화할 수 있음 • 문자형 배열의 크기를 명시하지 않아도 컴파일러가 크기를 자동으로할당 • 일반 형식 : • 문자열의 선언과 요소의 사용 방법 표기법 1 : char 배열명[ ] = “문자열”; 또는 char 배열명[ ] = { “문자열”}; 표기법 2 : char 배열명[ ] = { ‘문자’, ‘문자’, .... , ‘문자’}; 예 1 : char str1[ ] = “Programming”; 또는char 배열명[ ] ={ “Programming” }; 예 2 : char str2[ ] = { ‘P’, ‘r’, ‘o’, ‘g’, ‘r’, ‘a’, ‘m’, ‘m’, ‘i’, ‘n’, ‘g’ }; 문자열의 끝에 Null(‘\0’)문자가자동으로 추가(끝을 알림) 선언 방법 : char str[ ]={ “Programming” }; 요소의 사용방법 : 배열 요소처럼 사용. str[0], str[1], str[2], ....str[10], str[11] 12 #include <stdio.h> void main( ) { char str[12]="Programming"; printf("문자열 str의크기: %d \n", sizeof(str)); printf("str[0]내 문자출력: %c \n",str[0]); printf("str[10]내 문자출력: %c \n",str[10]); printf("str[12]내 문자출력: %c <= 빈출력\n\n",str[11]); // NULL은 빈공간으로 출력 }

  6. P R C E O M T \0 U 1004 1000 1001 1002 1003 1005 1006 1007 1008 : 1000 500 str 문자열과 포인터 • 문자열과 포인터 • 문자열은 Null(‘\0’)문자로 끝나는 문자형의 1차원 배열로 표현 • 문자열 “COMPUTER”자체는 문자열 상수가 저장된 기억장소의 주소이다. • 따라서, 문자열을 가리키기 위한 포인터 변수의선언과 동시에 문자열 상수를 초기화하는 것이 가능하다. • 포인터 변수 선언의 일반 형식 : 표기법 1 : char *포인터변수명= “문자열”; 예 : char *str = “COMPUTER”; 원소의 사용방법 : *str, *(++str), ... char *str = “COMPUTER” ; *: 문자열(배열) 선언의 예 charstr[ ] = “COMPUTER”

  7. E C T O \0 M R P U 1008 1004 1000 1001 1002 1003 1006 1007 1005 500 str 문자열과 포인터 • 문자열과 포인터 • 문자열은 Null(\0)문자로 끝나는 문자형의 1차원 배열로 표현 • 문자열 “COMPUTER”자체는 문자열 상수가 저장된 기억장소의 주소이다. • 따라서, 문자열을 가리키기 위한 포인터 변수의 선언과 동시에 문자열 상수를 초기화하는 것이 가능하다. • 포인터 변수 선언의 일반 형식 : 표기법 1 : char *포인터변수명= “문자열”; 예 : char *str = “COMPUTER”; 원소의 사용방법 : *str, *(++str), ... *str = ‘C’ *(str+1)=‘O’ : : ++str char *str = “COMPUTER” ; 1001 1000

  8. 문자열과 포인터[ 문자열(배열)과 문자열(포인터)의 프로그램 예) #include <stdio.h> // 문자열(배열 str[9])을 이용한 프로그램 예 void main() { inti = 0; char str[9]="COMPUTER";//문자열(배열) str선언 printf("문자열(배열) str의 전체내용출력=> %s\n",str); while(str[i] != '\0') { //각 문자가 저장된 배열의 번지와 문자출력 printf("%d %c\n",&str[i], str[i]); i++; } printf("\n\n"); } #include <stdio.h> // 문자열(포인터 str )를이용한프로그램 예 void main() { char *str ="COMPUTER"; // 포인터변수str선언 printf("문자열(포인터) str의 전체내용출력=> %s\n\n", str); while(*str != '\0') { //각 문자가 저장된 포인터의 번지와 문자출력 printf("%d %c\n",str, *(str++)); } printf("\n\n"); }

  9. str COPY 1000 ① strcpy( c_arry, “COMPUTER” ); 1001 1002 1003 ② strcpy( str, “COMPUTER” ); 1004 1005 1006 ③ str = c_arry; strcpy( str, “COMPUTER” ); 1007 1008 문자열과 포인터 • 문자열과 포인터 • 문자형 배열을 문자열 상수로 초기화하기 위해 strcpy( )함수를 사용 • strcpy() 함수를 사용할 경우, 본래의 문자열 상수와 똑같은 내용이 문자형 배열에 복사되므로 문자열 상수에 대한 두 개의 사본이 기억장소에 존재 • 보기 9-1 : 문자형 배열의 초기화 #include <stdio.h> #include <string.h> void main() { char c_arry[15]; char *str; // 1번의 예 strcpy(c_arry, "COMPUTER"); printf("문자열 c_arry의 출력 => %s\n", c_arry); // 2번의 예 :strcpy(str,”COMPUTER”); 는 본 문장에 // str = c_arry를 선언하지 않아 에러임 // 아래 3번의 예(붉은채)처럼 선언되어야 한다 // 3번의 예 str=c_arry; //배열에서 배열명이 배열의 시작주소임 strcpy(str,"COMPUTER"); printf("포인터변수str이용 *str의 출력=> %s\n\n", str); while(*str) //문자출력( 문자열 마지막 값이 \0이 반복문 종료됨 printf("%c",*str++); printf("\n\n"); } char *str; • char c_arry[15]; c_arry[15] 옮은문장 배열 c_arry[] 에 “COMPUTER”라는 문자열을 복사 잘못된 문장  아래 ③ 과 같이 표현해야 함 복사될 기억장소(포인터변수 str=c_arry선언되어야함)가 확보되지 않음 옳은 문장 포인터 변수 str이 배열 c_arry의 위치 가리키도록 초기화 하여 복사될 기억장소를 확보함

  10. argv[2] argv[1] argv[0] 명령행 인자 • 명령행이란 • 프로그램을 실행시키기 위해 명령어를 입력해 놓은 행(line) • C 언어에는 명령행을 활용할 수 있음 • C 컴파일러는 main()이 두 인자(파라메터)를 갖도록 제공 • argc : 명령어에 따르는 문자열의 개수. 명령행 입력에 대해 공백으로 구분 • argv : 문자열 포인터의 배열. argv[0], argv[1], ..... - 참고 argc : argument count argv : argument value argc ? => 1 2 3 C:\> fuss -r Ginger C:\> fuss -r Ginger 명령행 인자 명령행 프롬프트

  11. argv[5] argv[0] argv[1] argv[4] argv[2] argv[3] 명령행 인자 • 명령행 인자 • 명령행 인자를 사용하는 프로그램 • 실행결과 #include<stdio.h> void main(intargc, char *argv[]) { printf("Hi, Mr. %s\n", argv[4]); } argc ? => 6

  12. 문자열 처리 함수: gets( ), puts( ) • 문자열(String) 입출력 함수 • 문자열 입력 함수 : gets() • 문자열을 입력하고, 입력 받은 첫 문자의 주소 값을 반환 • 표준입력으로 enter키를 누를 때까지 공백을 포함한 모든 문자열을 입력 • 입력 문자열에는 enter키값은 넣지 않고, 마지막에 NULL(\0) 문자만을 추가 • 문자열 출력 함수 : puts() • 문자열을 한 줄에 출력 하고 마지막 newline(\n)을 출력하여 줄 바꿈 • 일반적으로 0인 정수를 반환하며, 오류가 발생하면 EOF를 반환 • 기호 상수 EOF는 정수 -1로 파일의 끝(End Of File)이라는 의미 함수 원형 : char gets(char *); 함수 사용 : gets(문자형 배열명); 함수 원형 : int puts(char *); 함수 사용 : puts(문자형 배열명);

  13. H e l l o w o r l d . . \0 #include <stdio.h> void main(){ char line[81]; char *ptr; printf("배열line[ ]에80개이내문자입력후Enter를 누르면>>\n"); ptr = gets(line); printf("\n"); printf("puts 문자열처리함수를이용한결과==> "); puts(ptr); printf("문자배열포인터(ptr)를이용한결과==> "); while (*ptr) printf("%c",*ptr++); printf("\n\n"); } 문자열 처리 함수 : gets( ), puts( ) • 문자열 입출력 함수 • 함수 gets()를 이용한 문자열 입력 • 문자열을 입력받을 적절한 문자배열포인터변수(ptr)를 이용 • 반환 주소 값을 이용하면 문자별로 참조가 가능 • 함수 puts()를 이용한 문자열 출력 • 출력할문자열의 첫 주소값을 인자로 출력 char line[81]; char *ptr; ptr= gets(line); while (*ptr) printf("%c",*ptr++); printf("\n"); char line[81]; char *ptr; ptr = gets(line); puts(ptr); #include <stdio.h> void main(){ char *str ="Helloworld…"; puts(str); } char *str = “HelloWorld…”; puts(str);

  14. #include <stdio.h> // getchar ( ) 활용 프로그램 void main() { char ch; printf("문자를 계속 입력하고 Enter를 누르면>>\n"); while ((ch= getchar() ) != 'q') printf("%c", ch); printf("\n\n 문자를 계속 입력하고 Enter를 누르면>>\n"); } 문자열 처리 함수 : getchar( ) • 문자열 입출력 함수 • 문자열 입력 함수 : getchar( ) • 입력된 자료가 버퍼에 저장되고 Enter키를 만나면 getchar()함수가 수행 • getchar() 함수의 수행과정 함수 원형 : int getchar( ); 함수 사용 : getchar(); char ch; while ((ch=getchar()) != 'q') printf(“%c”,ch); inputqout inputqout input // 입력 inputqout이며 출력결과는 input 이다 qout 문자저장순서 Enter키를 누르기 전까지 자료편집이 가능 임시 기억장치인 버퍼에 저장된다. 버퍼 자료를 이용하여 함수 getchar() 수행 inputqout 버퍼 문자 읽는순서

  15. #include <stdio.h> #include <conio.h> void main() { char ch; printf("문자를계속입력하다가q를누르면>>\n"); while ((ch= getche() ) != 'q') printf("%c", ch); printf("\n\n 문자를계속입력하다가q를누르면>>\n"); } 문자열 처리 함수 : getche( ) • 문자열 입출력 함수 • 문자열 입력 함수 : getche() //e :echo 화면에동시출력 • 버퍼를 이용하지 않고 문자 하나 하나를 바로(interactive) 처리하는 함수 • 헤더파일 conio.h파일을 추가 선언 # include <conio.h> • 버퍼를 사용하지 않으므로 문자 하나를 입력하면 곧바로 함수 getche()를 실행 • getche() 함수의 수행과정 함수 원형 : int getche( ); 함수 사용 : getche(); char ch; • while ((ch=getche()) != 'q‘) // #include <conio.h> printf(“%c”,ch); aaq aa a getche()수행 후 while문 수행 문자 a 입력 – 화면에 동시출력 문자 ‘q’입력 후 while문 종료

  16. #include <stdio.h> #include <conio.h> void main() { char ch; printf("문자를계속입력하다가q를누르면>>\n"); while ((ch= getch() ) != 'q') printf("%c", ch); printf("\n\n문자를계속입력하다가q를누르면>>\n"); } 문자열 처리 함수 • 문자열 입출력 함수 • 문자열 입력 함수 : getch() • 버퍼를 이용하지 않고 문자 하나 하나를 바로 처리하는 함수 • 헤더파일 conio.h파일을 추가 • 입력한 문자를 화면에 보이지 않고 확인을 위해 print()을 통해 화면 출력할수 있음 • getch() 함수의 수행과정 함수 원형 : int getch( ); 함수 사용 : getch(); char ch; • while ((ch=getch()) != 'q') // #include <conio.h> printf(“%c”,ch); a a 문자‘a’입력. 화면에 출력않음 getche()수행 후 while문 수행(a출력) 문자 ‘q’입력 후 while문 종료

  17. string.h라이브러리 함수사용 s1, s2는 문자형 배열명 또는문자열 포인터로 선언 문자열 처리 함수 • 문자열을 처리하는데 필요한 함수는 string.h헤더파일에 내장 • 문자열 함수는 문자열이 Null(‘\0’)문자로 끝나는 문자열을 처리대상으로 함 // 문자열 배열 s1, s2 char s1[10]; char s2[10] = “COMPUTER”; // 문자열포인터 s1, s2 char *s1 ; • char *s2 “COMPUTER”; 본장 실습 34페이지 이후부터 각 문자열처리함수를 이용한 프로그램이 있습니다.

  18. 실 습

  19. 단원의 개요 단원의 학습목표 학습 유의점 1. 문자 배열, 문자 포인터, 문자열의 배열 등을 이용한 정의 방식에 대해 알아본다. 2. 문자열 배열의 내부 구성과 연산 방법을 이해하고, 포인터와의 관계를 파악한다. 1. 문자열의 배열을 처리할 때는 포인터와 유사하지만, 배열은 상수이고, 포인터는 변수라는 사실을 이해한다. 2. 포인터 개념을 통해 문자열을 처리하는 예제 프로그램을 이해한다. 단원의 학습계획 사용된 함수와 선행처리기 1. 문자열의 개념 문자열 정의 방식들을 설명한다. 2. 문자열의 초기화 문자열 초기화 방법을 설명한다. 3. 문자열과 포인터 문자열과 포인터를 연관시켜 활용하는 방법을 설명한다. 4. 명령행 인자 명령행 인자의 구성 요소를 이해 시킨다. 5. 문자열 처리함수 헤더 파일 string.h에 내장되어 있는 함수에 대해 설명한다. • 함 수 : gets( ) : 형 식 : gets(char *); puts( ) : 형 식 : puts(char *); getchar( ) : 형 식 : intgetchar(); getche( ) : 형 식 : intgetche(); getch( ) : 형 식 : intgetch(); 기타 문자열 처리 함수들

  20. 문자열의 초기화 : 5pp 참조 • 문자열의 초기화 • 실습 1 : 다음 문자열들을 문자형 배열로 초기화하고 문자열과 문자 수를 출력하시오 • 실습 2 : 위 프로그램을 수정하여 word1은 1번째 문자를 word2는 2번째 문자를 .... word5는 5번째 문자를 출력하시오 word1 -> “Apple” word2 -> “Banana” word3 -> “Coconut” word4 -> “Melon” word5 -> “Papaya”

  21. #include <stdio.h> intalphabetic(int c) { if( (c>='a' && c<='z') || (c>='A' && c<='Z') ) return(1); else return(0); } intcount_words(char string[]) { inti, looking_for_word=1, word_count=0; for(i=0; string[i]!='\0'; ++i) { if(alphabetic(string[i])) { if(looking_for_word) { ++word_count; looking_for_word=0; } } else looking_for_word =1 ; } return(word_count); } 문자열의 초기화 : 5pp 참조 • 문자열의 초기화 • 예제 1 : 문자열 배열에 입력된 문자의 단어 수를 세는 프로그램

  22. void main() { static char text1[] = {"Here we go."}; static char text2[] = "And you will be here."; printf("%s -- words = %d\n", text1, count_words(text1)); printf("%s -- words = %d\n", text2, count_words(text2)); } 문자열의 초기화 • 문자열의 초기화 • 예제 1 : 문자열 배열에 입력된 문자의 단어 수를 세는 프로그램

  23. 문자열의 초기화 : • 문자열의 초기화 • 예제 1-1 : 다음 문자열에서 문자 ‘e’의 개수를 세는 프로그램을 작성하시오 • 실행 결과 “Small is the number of them that see with their own eyes and feel with their own hearts”

  24. #include <stdio.h> #include <string.h> void copy_string(char *from, char *to); void copy_string(char *from, char *to) { while(*from) *to++ = *from++; *to = '\0'; } void main() { static char string1[ ] = "This is a string to be copied."; static char string2[50]; copy_string(string1, string2); printf("Copy_String : %s\n", string2); strcpy(string2, string1); printf("strcpy : %s\n\n", string2); copy_string("So is this.", string2); printf("Copy_String : %s\n", string2); strcpy(string2, "So is this"); printf("strcpy : %s\n\n", string2); } 문자열과 포인터 : 6pp 참조 • 문자열과 포인터 • 예제 2 : 한 문자열을 다른 배열에 복사하는 프로그램 • 예제 2-2 : 예제 2의 copy_string함수 대신 strcpy() 함수를 사용하시오 #include <stdio.h> void copy_string(char *from, char *to) { while(*from) *to++ = *from++; *to = '\0'; } void main() { static char string1[ ] = "This is a string to be copied."; static char string2[50]; copy_string(string1, string2); printf("%s\n", string2); copy_string("So is this.", string2); printf("%s\n", string2); }

  25. 명령행 인자 • Visual Studio 6.0 에서 명령행 인자를 설정하는 방법 • 메뉴바의 Project 클릭

  26. 명령행 인자 • Visual Studio 6.0 에서 명령행 인자를 설정하는 방법 • Settings(Alt+F7)... 클릭

  27. 명령행 인자 • Visual Studio 6.0 에서 명령행 인자를 설정하는 방법 • Debug 탭 클릭

  28. 명령행 인자 • Visual Studio 6.0 에서 명령행 인자를 설정하는 방법 • Program arguments에 명령행 인자 입력

  29. 명령행 인자 : 9pp 참조 • 명령행 인자 • 명령행 인자를 이용한 echo 프로그램 • 실행결과 #include <stdio.h> /* *argv[] : 각 인자를 가리키는 포인터 배열 또는 **argv */ void main(intargc, char *argv[]) /* argv[ ] : 배열의값이 저장된 번지임 */ • { int count; for(count=1; count<argc; count++) // argc = 6 printf("%s ", argv[count]); printf("\n"); }

  30. 문자열 처리 함수 : 13pp 참조 • 문자열 입출력 함수 • 실습 3 : 함수 gets()와 puts()를 이용한 문자열 입출력 #include <stdio.h> void main() { char line[81]; char *ptr; //gets(line); ptr = gets(line); puts(line[81]); puts(ptr); }

  31. 문자열 처리 함수 : 13pp 참조 • 문자열 입출력 함수 • 실습 4 : 문자열 입력 함수 getchar()를 사용하여 사용자에게 이메일 주소를 입력받아 아이디를 출력하는 프로그램을 작성하시오 • 참조 : getchar() 함수의 수행과정 • 실행 결과 char ch; while ((ch=getchar()) != ‘@') printf(“%c”,ch);

  32. 문자열 처리 함수 : 14pp 참조 • 문자열 입출력 함수 • 실습 5 : 문자열 입력 함수 getche()를 사용하여 입력된 문자의 ASCII 코드값을 16진수 값으로 출력하고 문자 ‘q’를 입력하면 종료하는 프로그램을 작성하시오 • 참조 : getche() 함수의 사용예 • 실행 결과 char ch; while ((ch=getche()) != 'q') printf(“%c”,ch);

  33. 문자열 처리 함수 : 13pp,14pp,15pp 참조 • 문자열 입출력 함수 • 실습 6 : 다음 프로그램은 문자열 입력 함수 getchar(), getche(), getch()의 차이를 이해하기 위한 프로그램이다. 세번의 입력으로 각각 “wonkwang@”를 입력하시오 #include <stdio.h> #include <conio.h> void main() { char ch; printf("문자를 계속 입력하고 Enter를 누르면 >>\n"); while ((ch=getchar()) != '@') putchar(ch); printf("\n문자를 누를 때마다 두 번 출력 >>\n"); while ((ch=getche()) != '@') putchar(ch); printf("\n문자를 누르면 한 번 출력 >>\n"); while ((ch=getch()) != '@') putchar(ch); printf("\n"); }

  34. 문자열 처리 함수 : 9pp, 17pp 참조 #include <stdio.h> // 문자열 포인터이용 #include <string.h> void main() { char *str1="Wonkwang"; char *str2="University"; printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); printf("\n"); strcpy(str1, str2); printf("strcpy%(str1, str2%)\n"); printf("\n"); printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); } • 문자열 처리 함수 • strcpy() 함수의 사용법 #include <stdio.h> // 문자열 배열이용 #include <string.h> void main() { char str1[]="Wonkwang"; char str2[]="University"; printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); printf("\n"); strcpy(str1, str2); printf("strcpy%(str1, str2%)\n"); printf("\n"); printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); } copy

  35. 문자열 처리 함수 : 17pp 참조 • 문자열 처리 함수 • strncpy() 함수의 사용법 #include <stdio.h> #include <string.h> void main() { char str1[]="Wonkwang"; char str2[]="University"; printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); printf("\n"); strncpy(str1, str2, 4); printf("strcpy%(str1, str2%)\n"); printf("\n"); printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); } copy only 1st 4 characters

  36. 문자열 처리 함수 : 16pp 참조 • 문자열 처리 함수 • strcat() 함수의 사용법 #include <stdio.h> #include <string.h> void main() { char str1[]="Wonkwang"; char str2[]="University"; printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); printf("\n"); strcat(str1, str2); printf("strcat%(str1, str2%)\n"); printf("\n"); printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); } paste

  37. 문자열 처리 함수 : 17pp 참조 • 문자열 처리 함수 • strchr() 함수의 사용법 #include <stdio.h> #include <string.h> void main() { char str1[]="Wonkwang"; char str2[]="University"; printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); printf("\n"); strcpy(str2, strchr(str1, 'k')); printf("strcpy%(str2, strchr%(str1, 'k'%)\n"); printf("\n"); printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); }

  38. 문자열 처리 함수 : 17pp 참조 • 문자열 처리 함수 • strrev() 함수의 사용법 #include <stdio.h> #include <string.h> void main() { char str1[]="Wonkwang"; printf("string1 => %s\n",str1); printf("\n"); strrev(str1); printf("strrev%(str1%)\n", str1); printf("\n"); printf("string1 => %s\n",str1); }

  39. 문자열 처리 함수 : 17pp 참조 • 문자열 처리 함수 • strset() 함수의 사용법 #include <stdio.h> #include <string.h> void main() { char str1[]="Wonkwang"; printf("string1 => %s\n",str1); printf("\n"); strset(str1, 'c'); printf("strset%(str1, 'c'%)\n"); printf("\n"); printf("string1 => %s\n",str1); }

  40. 문자열 처리 함수 : 17pp 참조 • 문자열 처리 함수 • strupr(), strlwr() 함수의 사용법 #include <stdio.h> #include <string.h> void main() { char str1[]="Wonkwang"; printf("string1 => %s\n",str1); printf("\n"); strupr(str1); printf("strupr%(str1%) => %s\n", str1); strlwr(str1); printf("strlwr%(str1%) => %s\n", str1); }

  41. 문자열 처리 함수 : 17pp 참조 • 문자열 처리 함수 • 예제 3 : 입력 받은 두 개의 문자열이 같으면 “equal”을 다르면 “not equal”을 출력하는 프로그램 #include <stdio.h> #include <string.h> void main() { char p1[20], p2[20]; int d; gets(p1); gets(p2); d=strcmp(p1,p2); if(d ==0) printf("equal\n"); else printf("not equal\n"); }

  42. 문자열 처리 함수 : 17pp 참조 • 문자열 처리 함수 • 예제 4 : 문자열 처리 함수를 이용한 프로그램 #include <stdio.h> #include <string.h> void main() { //space1-5 : 문자열 처리시 메모리 침범을 방지하기 위한 공간 할당char space1[50]; char str1[]="SOKCHO DONG-U "; char space2[50]; char str2[]="SEOLAKSAN "; char space3[50]; char str3[]=" "; char space4[50]; char str4[]=" "; char space5[50]; printf("string1 => %s\n",str1); printf("string2 => %s\n",str2); strcpy(str3, str1); printf("str1 - > str3 copy => %s\n", str3); strncpy(str4, str1, 6); printf("str1 -> str4 6 part copy => %s\n", str4); strcat(str1, str2); printf("str1 & str2 merge => %s\n", str1); strcpy(str3,strlwr(str1)); printf("upper(str1) -> lower(str3) => %s\n", str3);

  43. strcpy(str1,strupr(str3)); printf("lower(str3) -> upper(str1) => %s\n", str1); strcpy(str4,strrev(str2)); printf("str4 reverse => %s\n", str4); strcpy(str4,strchr(str4, 'A')); printf("str1 find('A') => %s\n", str4); printf("\nstring1 => %s, length = %d\n", str1, strlen(str1)); printf("string2 => %s, length = %d\n", str2, strlen(str2)); printf("string3 => %s, length = %d\n", str3, strlen(str3)); printf("string4 => %s, length = %d\n", str4, strlen(str4)); printf("str1 & str3 compare => %d\n", strcmp(str1, str3)); printf("str2 & str4 compare => %d\n", strcmp(str2, str4)); } 문자열 처리 함수 • 문자열 처리 함수

More Related