Microsoft PowerPoint - 제9강 문자열

Similar documents
Microsoft PowerPoint - C프로그래밍-chap15.ppt [호환 모드]

심화프로그래밍 설계

PowerPoint 프레젠테이션

Microsoft PowerPoint - 제11강 파일 처리

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

YRRZBRRLMCEQ.hwp

13 주차문자열의표현과입출력

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - 10장 문자열 pptx

윤성우의 열혈 TCP/IP 소켓 프로그래밊

<4D F736F F F696E74202D20C1A632B0AD20BAAFBCF6BFCD20C0DAB7E12C20C0FCC3B3B8AEBFCD20C0D4C3E2B7C2>

Microsoft PowerPoint - chap10-함수의활용.pptx

설계란 무엇인가?

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap06-4 [호환 모드]

PowerPoint Presentation

11장 포인터

chap7.key

Microsoft PowerPoint - 06_(C_Programming)_(Korean)_Characters_Strings

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

PowerPoint 프레젠테이션

슬라이드 1

PA for SWE2007

歯7장.PDF

Microsoft PowerPoint - ch07 - 포인터 pm0415

PA for SWE2007

chap7.PDF

Computer Programming (2008 Fall)

<4D F736F F F696E74202D D20B9AEC0DABFAD2C20BDBAC6AEB8B2B0FA20C6C4C0CF20C0D4C3E2B7C2>

문서의 제목 나눔명조R, 40pt

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap-12.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

BMP 파일 처리

11장 포인터

금오공대 컴퓨터공학전공 강의자료

PA0 for SSE2033

11장 포인터

제1장 Unix란 무엇인가?

02장.배열과 클래스

PowerPoint 프레젠테이션

이번장에서학습할내용 문자표현방법 문자열표현방법 문자열이란무엇인가? 문자열의입출력 문자처리라이브러리함수 표준입출력라이브러리함수 인간은문자를사용하여정보를표현하므로문자열은프로그램에서중요한위치를차지하고있다. 이번장에서는 C 에서의문자열처리방법에대하여자세히살펴볼것입니다. 2

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - [CPI16] Lecture 10 - 문자열.pptx

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

PowerPoint Template

untitled

PowerPoint 프레젠테이션

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - Chapter_08.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06.ppt

11장 포인터

ABC 6장

Microsoft PowerPoint - chap11-포인터의활용.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap11-1.ppt [호환 모드]

03 상수, 변수, 자료형

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - ch07 - 포인터 pm0415

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

<4D F736F F F696E74202D20C1A63132C0E520B9AEC0DABFCD20B9AEC0DABFAD>

Microsoft PowerPoint - chap06-1Array.ppt

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

11장 포인터

11장 포인터

歯9장.PDF

OCW_C언어 기초

C 프로그램의 기본

ch13

11장 포인터

Microsoft PowerPoint - chap12-고급기능.pptx

ch15

untitled

11장 포인터

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

PowerPoint Presentation

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft PowerPoint - C++ 5 .pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

제1장 Unix란 무엇인가?

Microsoft PowerPoint - 제12장 문자열(강의)

PowerPoint Template

Microsoft PowerPoint - 7_배열_문자열

Microsoft PowerPoint - chap4 [호환 모드]

C++ Programming

PowerPoint Presentation

untitled

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Microsoft PowerPoint - chap03-변수와데이터형.pptx

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Microsoft PowerPoint - chap06-5 [호환 모드]

쉽게풀어쓴 C 언어 Express 제 12 장문자와문자열 이번장에서학습할내용 문자표현방법 문자열표현방법 문자열이란무엇인가? 문자열의입출력 문자처리라이브러리함수 표준입출력라이브러리함수 인간은문자를사용하여정보를표현하므로문자열은프로그램에서중요한위치를차지하

ABC 6장

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Transcription:

제11장 문자열

문자열정의 문자열과포인터, 문자열과배열 2 차원문자열배열, 2 차원문자열포인터 문자열함수, 헤더파일 string.h ctype.h strlen(), strcat(), strcpy(), strstr(), strchr(), strcmp(), strtok() getc(), putc(), fgetc(), fputc(), gets(), puts(), fgets(), fputs() 명령줄라인 한밭대정보통신공학과 и чунг хо 2

문자열 : 문자가연속적으로나열되어있고맨마지막에 NULL 문자로끝나는것. C 언어에서는 으로시작해서 로끝난다. 는문자 1 개를뜻하고 는맨마지막에 NULL 문자가있는것을의미한다. char str[]= I love you! ; //str 주소상수 int len = sizeof(str); //len 은 12, NULL 문자포함 int len = strlen(str); //1en 은 11, NULL 제외길이 문자열처리함수를사용전에 #include <string.h> 를포함시켜야함. 한밭대정보통신공학과 и чунг хо 3

char *p = I love you! ; //p 는문자열을가리키는포인터임. p++ 와같이 p 가포인터이므로값이변할수있음. int len = sizeof(p); //len 은 4, 포인터의길이 char str[]= I love you! ; int len = sizeof(str); //len 은 12, str 은주소상수 // NULL 문자를포함문자열길이 str 은상수이므로 str++ 와같은연산이불가능함. 한밭대정보통신공학과 и чунг хо 4

char *p[]={ a, bad, good, adore }; 컴파일러가 [] 안에 4 가들어간다고해석 문자열 4 개의처음을가리키는포인터 4 개는각각 p[0], p[1], p[2], p[3] 각문자열의크기는 sizeof( a ) 와같이하면각각 2, 4, 5, 6 이된다. 이것을 ragged 배열이라한다. 물론 sizeof(p[0]) 이면포인터의길이가되어 4 개의포인터모두길이 4 가된다. 한밭대정보통신공학과 и чунг хо 5

#include <stdio.h> int main() { char *p[] = { "a", "bad", "good", "adore" }; int i; for (i = 0; i<4; i++) printf("%s\n", p[i]); // 각문자열을프린트한다. return 0; } 한밭대정보통신공학과 и чунг хо 6

char p[][6] = { "a", "bad", "good", "adore" }; 이경우에 p 는주소상수이다. 각문자열의크기는 4 개의문자열모두길이가 6 로정해져있다. 6 이열의수로들어가있기때문이다. 컴파일러는앞의 [] 에 4 가들어있는것으로해석하여 4 개의문자열이있은것으로생각한다. 한밭대정보통신공학과 и чунг хо 7

#include <stdio.h> int main() { char p[][6] = { "a", "bad", "good", "adore" }; int i; for (i = 0; i<4; i++) printf("%s\n", p[i]); // 각문자열을프린트한다. // 결과는같으나각문자열의길이가 6 으로일정하다는점이다르다. return 0; } 한밭대정보통신공학과 и чунг хо 8

string.h 를포함시켜야한다. 문자열줄단위입출력함수 : 한줄입력 : gets() 또는 fgets(char *, int, FILE *) 한줄출력 : puts() 또는 fputs(char *, int, FILE *) 한줄출력 : puts() #include <stdio.h> int main() { char line[80]; gets(line); //fgets(line,80,stdin) puts(line); // fputs(line,80,stdout) return 0; } 한밭대정보통신공학과 и чунг хо 9

버퍼를이용하지않고문자한개씩즉시처리 getche() : 입력시에화면에보인다. e는 echo라고기억하면된다. getch() : 입력시에화면에보이지않는다. #include <stdio.h> #include <conio.h> int main() { char line[80]; int i = 0; while ((line[i++] = _getch())!='\r');//enter키를칠때까지 line[i] = NULL; puts(line); return 0; } 한밭대정보통신공학과 и чунг хо 10

int isalpha(int): 매개변수가영문자이면 0 이아닌값을, 아니면 0 을반환 int isdigit(int ): 매개변수가숫자이면 0 이아닌값을, 아니면 0 을반환 int isalnum(int ): 매개변수가영문자또는숫자이면 0 이아닌값, 아니면 0 을반환 int ispunct(int ): 매개변수가구획문자 ( 영문자, 숫자, 공백이외의출력가능한문자 ) 이면 0 이아닌값을, 아니면 0 을반환 int isspace(int ): 매개변수가공백이면 0 이아닌값을, 공백이면 0 을반환 int isxdigit(int ): 매개변수가 16 진수숫자이면 0 이아닌값을, 아니면 0 을반환 한밭대정보통신공학과 и чунг хо 11

int isprint(int ) : 출력가능한문자이면 0 이아닌값을, 아니면 0 을반환 int iscntrl(int ): 제어문자이면 0 이아닌값을, 아니면 0 을반환 int isascii(int ): ASCII 코드이면 0 이아닌값을, 아니면 0 을반환 int isupper(int ): 매개변수가대문자이면 0 이아닌값을, 아니면 0 을반환 int islower(int ): 매개변수가소문자이면 0 이아닌값을반환, 아니면 0 을반환 한밭대정보통신공학과 и чунг хо 12

int isprint(int ) : 출력가능한문자이면 0 이아닌값을, 아니면 0 을반환 int iscntrl(int ): 제어문자이면 0 이아닌값을, 아니면 0 을반환 int isascii(int ): ASCII 코드이면 0 이아닌값을, 아니면 0 을반환 int isupper(int ): 매개변수가대문자이면 0 이아닌값을, 아니면 0 을반환 int islower(int ): 매개변수가소문자이면 0 이아닌값을반환, 아니면 0 을반환 한밭대정보통신공학과 и чунг хо 13

int toupper(int): 매개변수를대문자로변환하여반환 int tolower(int): 매개변수를소문자로변환하여반환 int toascii(int): 매개변수를아스키코드로변환하여반환 한밭대정보통신공학과 и чунг хо 14

char* strcpy(char* s1, const char* s2); s2 가가르키는문자열을 s1 이가르키는문자열로 NULL 문자까지포함하여복사하고리턴값은 s1 의시작주소를반환한다. char* strncpy(char* s1, const char*s2, size_t n); s2 가가르키는문자열의내용을 n byte 만큼 s1 이가르키는문자열로복사하고리턴값은 s1 의시작주소를반환한다. char* strcat(char* s1, const char* s2); s2 가가르키는문자열을 s1 이가르키는문자열의끝에이어서복사한다. 리턴값은 s1 의시작주소를반환한다. char* strncat(char* s1, const char* s2, size_t n); s2 가가르키는문자열을 s1 이가르키는문자열끝에 n 바이트만큼복사한다. 리턴값은 s1 의시작주소를반환한다. 한밭대정보통신공학과 и чунг хо 15

처음에는자르기대상인문자열과자르기를위한문자를인수로호출. strtok( str, sep); 이후에는문자열대상을 NULL과자르기를위한문자만인수로전달. strtok( NULL, sep); 더이상구할문자열이없다면 NULL이반환. char *sep=,, *p; char *str[]= C, C++, Java, Object C ; p= strtok(str,sep); while(p!=null) { printf( %\n, p); p=sttok(null,sep); } 한밭대정보통신공학과 и чунг хо 16

처음에는자르기대상인문자열과자르기를위한문자를인수로호출합니다. strtok( str, sep); 이후에는문자열대상을 NULL 과자르기를위한문자만인수로전달합니다. strtok( NULL, sep); 더이상구할문자열이없다면 NULL 이반환됩니다. 한밭대정보통신공학과 и чунг хо 17

int strcmp(const char* s1, const char* s2); s1의아스키코드값에서 s2의값을빼서그값을반환한다. S1이 s2보다더크면양수 ( 보통 1) 를반환하고, 그반대면음수 ( 보통 -1) 을반환한다. 두문자열이같을경우 0을반환한다. int strncmp(const char* s1, const char* s2, size_t n); 기본적으로 strcmp 와동일하나 n 바이트만큼만비교한다. char* strchr(const char* s, int c); s 가가르키는문자열에서아스키코드 c 에해당하는문자가처음나타나는위치의주소값을반환한다. 찾는문자값이없는경우 NULL 을반환한다. char* strtok (const char* s1, const char *s2); s1 은자르기대상문자열, s2 는잘라내기위한문자의모임이다. 잘라내기한문자열의첫번째포인터를반환하며, 문자열이없다면 NULL 을반환한다. 한밭대정보통신공학과 и чунг хо 18

char* strbrk(const char* s1, const char* s2); s1 이가르키는문자열에서 s2 에포함된문자가처음나타난위치의주소값을반환한다. 찾을수없는 NULL 반환. char* strrchr(const char* s, int c); s 가가르키는문자열에서 c( 아스키코드값 ) 에해당하는문자가마지막으로나타나는위치의주소값을반환한다. 널문자도문자열의일부이므로찾을수있으며찾는값이없을경우 NULL 반환. char* strstr(const char* s1, const char* s2) S1 이가르키는문자열에서 s2 의문자열이처음나타난위치의주소값을반환한다. 없으면 NULL 반환. 보통부분적인문자열일치유무를확인할때사용한다. size_t strlen(const char* s); 문자열 s 의문자의수 ( 바이트단위 ) 반환. 널 ('\0') 문자는포함안함. 보통문자열의문자길이를체크할때쓴다. 한밭대정보통신공학과 и чунг хо 19

#include <stdio.h> int main(int argc, char **argv) { //argc : 명령줄라인의매개변수수 //argv: 명령어부터 argv[0], argv[1], argv[2].. int i; for(i=0;i<argc;i++) printf( argv[%d]=%s\n, i, argv[i]); return 0; } 한밭대정보통신공학과 и чунг хо 20

명령줄라인커맨드실행방법 1. 솔루션클릭 /Windows 탐색기에서폴더열기 /Debug 클릭 2. 텍스트로주소복사 3. 마이크로소트로고클릭 / 프로그램및파일검색에서 cmd 라고쳐넣고엔터 / 4. cd ( 여기에주소붙여넣기하고엔터 ) 5. 여기에서솔루션이름 ( 여기서는 argtest) 을치고매개변수들 (arguments) 을차례로입력한다. 엔터 한밭대정보통신공학과 и чунг хо 21

문자열정의 문자열과포인터, 문자열과배열 2 차원문자열배열, 2 차원문자열포인터 문자열함수, 헤더파일 string.h ctype.h strlen(), strcat(), strcpy(), strstr(), strchr(), strcmp(), strtok() getc(), putc(), fgetc(), fputc(), gets(), puts(), fgets(), fputs() 명령줄라인 한밭대정보통신공학과 и чунг хо 22