쉽게 풀어쓴 C언어 Express 제12장 문자와 문자열 C Express Slide 1 (of 28)

Slides:



Advertisements
Similar presentations
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
컴퓨터 개론 및 실습 강의 6 서울대학교 기계항공공학부 담당 : 김 찬 중.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
Part 11 문자열 ©우균, 창병모 ©우균, 창병모.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
쉽게 풀어쓴 C언어 Express 제12장 문자와 문자열 C Express.
C언어 프로그래밍의 이해 Ch12. 표준 입출력.
제12장 문자와 문자열.
제 10 장 문자와 문자열.
Chapter 15 문자열.
조 병 규 Software Quality Lab. 한국교통대학교
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
Heesang kim PL/SQL 3 Heesang kim.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
포인터 활용 포인터 활용.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
21장. 문자와 문자열 처리 함수.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
11 표준 입출력과 파일 입출력 데이터를 읽고 쓰는 다양한 방법 익히기!.
6장. printf와 scanf 함수에 대한 고찰
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
프로그래밍 랩 – 7주 리스트.
14장. 포인터와 함수에 대한 이해.
2019년 1월 16일 오후 6시 15분 제 6 장 함수
-Part3- 제2장 문자열 표준 함수와 기타 표준 함수
11장. 1차원 배열.
쉽게 풀어쓴 C언어 Express 제12장 문자와 문자열 C Express.
C#.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
어서와 C언어는 처음이지 제14장.
문자열 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
문자열과 배열 문자열 입출력 문자열 처리 함수 문자 처리 함수 문자열의 배열
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
2nd day Indexing and Slicing
제 15 강 문자와 코드 shcho.pe.kr.
문자열 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
컴퓨터 프로그래밍 기초 #13 : 문자열 Seong-Yun Choi
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
김선균 컴퓨터 프로그래밍 기초 - 12th : 문자열 - 김선균
어서와 C언어는 처음이지 제21장.
윈도우에서의 유니코드.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

쉽게 풀어쓴 C언어 Express 제12장 문자와 문자열 C Express Slide 1 (of 28)

문자표현방법 컴퓨터에서는 각각의 문자에 숫자코드를 붙여서 표시한다. 아스키코드(ASCII code): 표준적인 8비트 문자코드 0에서 127까지의 숫자를 이용하여 문자표현 유니코드(unicode): 표준적인 16비트 문자코드 전세계의 모든 문자를 일관되게 표현하고 다룰 수 있도록 설계 Slide 2 (of 28)

문자 변수와 문자 상수 문자변수 문자상수 // 문자 상수 #include <stdio.h> int main(void) { char code1 = 'A'; char code2 = 65; printf("code1=%c, code1=%d\n", code1,code1); printf("code2=%c, code2=%d\n", code2,code2); return 0; } code1=A, code1=65 code2=A, code2=65 Slide 3 (of 28)

문자열 표현 방법 문자열(string): 문자들이 여러 개 모인것 "A" "Hello World!" "변수 score의 값은 %d입니다“ 문자열 상수 "Hello World" "Hong" "string!#$" "guest123" "ascii code = %d“ 문자열 변수 char형 배열 Slide 4 (of 28)

NULL 문자 NULL 문자: 문자열의 끝을 나타낸다. 문자열은 어디서 종료되는지 알수가 없으므로 표시를 해주어야 한다. Slide 5 (of 28)

문자 배열의 초기화 문자 배열 원소들을 중괄호 안에 넣어주는 방법 char str[6] = { 'H', 'e', 'l', 'l', 'o', '\0' }; 문자열 상수를 사용하여 초기화하는 방법 char str[6] = "Hello";· 만약 배열을 크기를 지정하지 않으면 컴파일러가 자동으로 배열의 크기를 초기화값에 맞추어 설정 char str[] = "C Bible"; // 배열의 크기는 7이 된다. Slide 6 (of 28)

문자 배열에 문자를 저장 각각의 문자 배열 원소에 원하는 문자를 개별적으로 대입하는 방법이다. str[0] = 'W'; str[1] = 'o'; str[2] = 'r'; str[3] = 'l'; str[4] = 'd'; str[5] = '\0'; strcpy()를 사용하여 문자열을 문자 배열에 복사 strcpy(str, "World"); Slide 7 (of 28)

문자열 길이 계산 예제 // 문자열의 길이를 구하는 프로그램 #include <stdio.h> int main(void) { char str[30] = "C language is easy"; int i = 0; while(str[i] != 0) i++; printf("문자열\"%s\"의 길이는 %d입니다.\n", str, i); return 0; } 문자열 "C language is easy"의 길이는 18입니다. Slide 8 (of 28)

문자 입출력 라이브러리 입출력 함수 설명 int getchar(void) 하나의 문자를 읽어서 반환한다. void putchar(int c) 변수 c에 저장된 문자를 출력한다. int getch(void) 하나의 문자를 읽어서 반환한다(버퍼를 사용하지 않음). void putch(int c) 변수 c에 저장된 문자를 출력한다(버퍼를 사용하지 않음). scanf("%c", &c) 하나의 문자를 읽어서 변수 c에 저장한다. printf("%c", c); Slide 9 (of 28)

getchar(), putchar() // getchar()의 사용 #include <stdio.h> int main(void) { int ch; // 정수형에 주의 while(1) ch = getchar(); // 문자를 입력받는다. if( ch == 'q' ) break; putchar(ch); } return 0; A B q Slide 10 (of 28)

getch(), putch() // getch()의 사용 #include <conio.h> int main(void) { int ch; // 정수형에 주의 while(1) ch = getch(); // 문자를 입력받는다. if( ch == 'q' ) break; putch(ch); } return 0; 버퍼를 사용하지 않는다 ABCDEFGH Slide 11 (of 28)

getch(), getche(), getchar() 헤더파일 버퍼사용여부 에코여부 응답성 문자수정여부 getchar() <stdio.h> 사용함 (엔터키를 눌러입력됨) 에코 줄단위 가능 getch() <conio.h> 사용하지 않음 에코하지 않음 문자단위 불가능 getche() 용도에 맞는 것을 골라 사용하세요! 버퍼가 없이 바로 받으려면 getch()를 사용합니다. Slide 12 (of 28)

문자열 입출력 라이브러리 함수 프로그램 …Hello World!... 입출력 함수 설명 int scanf("%s", s) int printf("%s", s) 배열 s[]에 저장되어 있는 문자열을 출력한다. char *gets(char *s) 한 줄의 문자열을 읽어서 문자 배열 s[]에 저장한다. int puts(const char *s) 배열 s[]에 저장되어 있는 한 줄의 문자열을 출력한다. 프로그램 …Hello World!... Slide 13 (of 28)

scanf(), printf() 문자열 입출력 char str[10]; scanf("%s", str); scanf()는 한 번에 두개 이상의 문자열도 받아들일 수 있다. char s1[10]; char s2[10]; char s3[10]; scanf("%s%s%s", s1,s2,s3); // 사용자가 one two three와 같이 입력하면 s1에는 one이, s2에는 two가, s3에는 three가 할당된다. Slide 14 (of 28)

gets()와 puts() 문자열 입출력 gets() 표준 입력으로부터 엔터키가 나올 때까지 한 줄의 라인을 입력 char *gets(char *buffer); int puts(const char *str); gets() 표준 입력으로부터 엔터키가 나올 때까지 한 줄의 라인을 입력 문자열에 줄바꿈 문자('\n')는 포함되지 않으며 대신에 자동으로 NULL 문자('\0')를 추가한다. 입력받은 문자열은 buffer가 가리키는 주소에 저장된다. puts() str이 가리키는 문자열을 받아서 화면에 출력 NULL 문자('\0')는 줄바꿈 문자('\n')로 변경 char *menu = "파일열기: open, 파일닫기: close"; puts("메뉴에서 하나를 선택하시오."); puts(str); Slide 15 (of 28)

문자 처리 라이브러리 함수 문자를 검사하거나 문자를 변환한다. 함수 설명 isalpha(c) c가 영문자인가?(a-z, A-Z) isupper(c) c가 대문자인가?(A-Z) islower(c) c가 소문자인가?(a-z) isdigit(c) c가 숫자인가?(0-9) isalnum(c) c가 영문자이나 숫자인가?(a-z, A-Z, 0-9) isxdigit(c) c가 16진수의 숫자인가?(0-9, A-F, a-f) isspace(c) c가 공백문자인가?(‘ ’, ‘\n', '\t', '\v', '\r') ispunct(c) c가 구두점 문자인가? isprint(c) C가 출력가능한 문자인가? iscntrl(c) c가 제어 문자인가? isascii(c) c가 아스키 코드인가? 함수 설명 toupper(c) c를 대문자로 바꾼다. tolower(c) c를 소문자로 바꾼다. toascii(c) c를 아스키 코드로 바꾼다. Slide 16 (of 28)

예제 #include <stdio.h> #include <ctype.h> int main( void ) { int c; while((c = getchar()) != EOF) if( islower(c) ) c = toupper(c); putchar(c); } return 0; 소문자인지 검사 대문자로 변환 abcdef ABCDEF ^Z Slide 17 (of 28)

문자열 처리 라이브러리 H e l o W r d 함수 설명 strlen(s) 문자열 s의 길이를 구한다. strcpy(s1, s2) s2를 s1에 복사한다. strcat(s1, s2) s2를 s1의 끝에 붙여넣는다. strcmp(s1, s2) s1과 s2를 비교한다. strncpy(s1, s2, n) s2의 최대 n개의 문자를 s1에 복사한다. strncat(s1, s2, n) s2의 최대 n개의 문자를 s1의 끝에 붙여넣는다. strncmp(s1, s2, n) 최대 n개의 문자까지 s1과 s2를 비교한다. strchr(s, c) 문자열 s안에서 문자 c를 찾는다. strstr(s1, s2) 문자열 s1에서 문자열 s2를 찾는다. H e l o W r d Slide 18 (of 28)

문자열 길이, 복사 문자열의 길이 strlen(“Hello”)는 5를 반환 문자열 복사 char dst[6]; char src[6] = “Hello"; strcpy(dst, src); Slide 19 (of 28)

문자열 연결 문자열 연결 char dst[12] = "Hello"; char src[6] = "World"; strcat(dst, src); Slide 20 (of 28)

문자열 비교 int strcmp( const char *s1, const char *s2 ); 반환값 s1과 s2의 관계 <0 s1이 s2보다 작다 s1이 s2와 같다. >0 s1이 s2보다 크다. Slide 21 (of 28)

예제 첫번째 단어를 입력하시오:Hello 두번째 단어를 입력하시오:World Hello가 World보다 앞에 있읍니다. // strcmp() 함수 #include <string.h> #include <stdio.h> int main( void ) { char s1[80]; // 첫번째 단어를 저장할 문자배열 char s2[80]; // 두번째 단어를 저장할 문자배열 int result; printf("첫번째 단어를 입력하시오:"); scanf("%s", s1); printf("두번째 단어를 입력하시오:"); scanf("%s", s2); result = strcmp(s1, s2); if( result < 0 ) printf("%s가 %s보다 앞에 있읍니다.\n", s1, s2); else if( result == 0 ) printf("%s가 %s와 같습니다.\n", s1, s2); else printf("%s가 %s보다 뒤에 있습니다.\n", s1, s2); return 0; } 첫번째 단어를 입력하시오:Hello 두번째 단어를 입력하시오:World Hello가 World보다 앞에 있읍니다. Slide 22 (of 28)

문자 검색, 문자열 검색 문자열에서 문자 검색 문자열에서 문자열 검색 char s[] = "language"; // 문자열 char c = 'g'; // 찾고자 하는 문자 char *p; // 문자 포인터 p = strchr(s, c); // str에서 c를 찾는다. char s[] = "A joy that's shared is a joy made double"; // 입력 문자열 char sub[] = "joy"; // 찾으려고 하는 문자열 char *p; // 문자 검색 위치 저장 포인터 p = strstr(s, sub); // s에서 sub를 찾는다. Slide 23 (of 28)

문자열 수치 변환 문자열과 수치 수치 문자열 scanf() 함수는 문자열을 수치로 변환한다. Slide 24 (of 28)

문자열을 수치로 변환하는 전용함수 전용 함수는 scanf()보다 크기가 작다. stdlib.h에 원형 정의- 반드시 포함 함수 설명 int atoi( const char *str ); str을 int형으로 변환한다. long atoi( const char *str ); str을 long형으로 변환한다. double atof( const char *str ); str을 double형으로 변환한다. Slide 25 (of 28)

문자열 토큰 분리 // atoi() 함수 #include <stdio.h> #include <stdlib.h> int main( void ) { char s[30]; char t[] = "36.5"; int i; double v; printf("정수를 입력하시오:"); gets(s); i = atoi(s); printf("입력된 정수: %d \n", i); v = atof(t); printf("변환된 실수: %f", v); return 0; } 정수를 입력하시오:89 입력된 정수: 89 변환된 실수: 36.500000 Slide 26 (of 28)

sscanf(), sprintf() 함수 설명 sscanf(s,...) int main( void ) { char s1[] = "100"; char s2[] = "12.93"; char buffer[100]; int i; double d; double result; sscanf(s1, "%d", &i); sscanf(s2, "%lf", &d); result = i + d; sprintf(buffer, "%f", result); printf("연산 결과는 %s입니다.\n", buffer); return 0; } 연산 결과는 112.930000입니다. Slide 27 (of 28)

Q & A Slide 28 (of 28)