YRRZBRRLMCEQ.hwp

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

PowerPoint Presentation

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

11장 포인터

Microsoft PowerPoint - 제9강 문자열

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - 10장 문자열 pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

설계란 무엇인가?

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - chap-12.pptx

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

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

<4D F736F F F696E74202D D20B9AEC0DABFAD2C20BDBAC6AEB8B2B0FA20C6C4C0CF20C0D4C3E2B7C2>

Microsoft PowerPoint - chap06-1Array.ppt

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

02장.배열과 클래스

11장 포인터

11장 포인터

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

PA for SWE2007

untitled

PA for SWE2007

슬라이드 1

11장 포인터

Microsoft PowerPoint - chap06-2pointer.ppt

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

OCW_C언어 기초

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

PowerPoint 프레젠테이션

11장 포인터

11장 포인터

ch13

11장 포인터

<4D F736F F F696E74202D20C1A63132C0E520B9AEC0DABFCD20B9AEC0DABFAD>

PA0 for SSE2033

Microsoft PowerPoint - 7_배열_문자열

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

PowerPoint Presentation

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

C++ Programming

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

<4D F736F F F696E74202D20C1A632B0AD20BAAFBCF6BFCD20C0DAB7E12C20C0FCC3B3B8AEBFCD20C0D4C3E2B7C2>

untitled

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

歯7장.PDF

chap7.PDF

Microsoft PowerPoint - [2009] 02.pptx

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

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

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

11장 포인터

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

Microsoft PowerPoint - Chapter_08.pptx

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

Microsoft PowerPoint - 제11장 포인터(강의)

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

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

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

C 프로그래밊 개요

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint Presentation

Microsoft PowerPoint - 제11장 포인터

歯9장.PDF

Microsoft PowerPoint - Chapter_07.pptx

03 상수, 변수, 자료형

중간고사

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

설계란 무엇인가?

Microsoft PowerPoint - C++ 5 .pptx

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

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

Chapter_06

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

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

슬라이드 1

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - ch01.ppt

C 언어 프로그래밊 과제 풀이

C 프로그램의 기본

Microsoft PowerPoint - chap4_2013 [호환 모드]

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

강의 개요

심화프로그래밍 설계

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

슬라이드 1

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

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

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

Transcription:

C언어2 4차시강의자료 이대종( 한경대학교) 1 차시. 자료형( 데이터유형) 1.1 문자형데이터형식 ( char 형 ) 1.2 소수점이없는정수형 ( int 형 ) 1.3 소수점이있는실수형 (float 형, double 형 ) 2 차시. 연산자 2.1 2.2 2.3 2.4 산술연산자 증감연산자 관계연산자 논리연산자 3 차시. 제어문 ( 조건문, 반복문) 3.1 조건문 3.2 반복문 4 차시. 문자열처리 4.1 문자형배열( 문자열) 4.2 문자열처리함수 4.3 문자열입출력함수( 콘솔입출력) 5 차시. 변수( 지역변수, 전역변수) 5.1 함수 5.2 변수 6 차시. 포인터개념및응용 1 6.1 6.2 포인터자료형구분 포인터를이용한데이터접근하기 6.3 포인터를이용한 1차원배열다루기

7 차시. 포인터개념및응용 2 7.1 포인터를이용한 2차원배열다루기 7.2 7.3 포인터배열 문자형포인터응용 8 차시. 포인터개념및응용포인터를이용한동적메모리조작 8.1 포인터의사용목적 8.2 포인터변수를이용한동적메모리사용하기 ( 변수형) 8.3 포인터변수를이용한일차원배열의동적메모리할당 9 차시. 구조체 9.1 9.2 구조체개요 구조체연습 10 차시. 파일입출력 1 10.1 파일입출력 11 차시. 파일입출력 2 11.1 파일입출력응용 12 차시. 수학함수와유용한함수 12.1 12.2 12.3 수학함수 난수발생함수 타임함수 13 차시. 종합예제 [ 종합예제-1] 헤더파일작성종합 [ 종합예제-2] 다운받은헤더파일이용하기 [ 종합예제-3] 로또숫자자동발급프로그램작성 [ 참고] 링크드리스트 [ 참고] 문제

4 차시. 문자열처리 4.1 문자형배열( 문자열) 문자열은문자들을모아놓은배열이다. 반드시문자열의맨끝에는널문자 (NULL, '\0' ) 이설정되어야만한다. printf 를이용하여문자열출력시서식은 %s, 한문자출력시서식은 %c 임 [ 예제 4.1-1] NULL문자의수동삽입 char a[3]; a[0]='a'; a[1]='b'; a[2]='c'; char a[3]; a[0]='a'; a[1]='b'; //a[2]=null; a[2]='\0'; 문자열에서배열의크기는 문자열길이+1 이어야한다. ( 널문자까지고려해야함) [ 예제 4.1-2] 문자열초기화방법 char a[3]; a[0]='a'; a[1]='b'; a[2]=null; char a[3]='a','b','\0'; - 3 -

[ 예제 4.1-3] NULL 문자의자동삽입 배열의선언과동시에큰따옴표 로문자를 초기화하는경우널문자자동삽입됨 char a[3]="ab"; char a[3]="abc"; // 주의요망 문자열에서배열의크기는 문자열길이+1 이어야한다. ( 널문자까지고려해야함) [ 예제 4.1-4] 보편적으로사용되는문자열초기화방법 char a[]="abcdefg"; char a[3]="abc"; // 주의요망 NULL의아스키코드값은 0임 [ 예제 4.1-5] 문자열에서문자변경하기 char a[]="aaaaa"; a[0]='b'; char a[]="aaaaa"; a[5]='b'; - 4 -

[ 예제 4.1-6] while(null), if(null) 의의미 NULL 은문자열의끝을의미하는것으로값자체를갖지는않는다. 조건문에 NULL 값이들어갈경우자동으로아스키코드값(0) 으로형변환시킴 printf("%c\n",null); printf("%c\n",'\0'); printf("%d\n",'\0'); printf("%d\n",null); if(null) printf("null\n"); if('a') printf("aaa\n"); if('0') printf("000\n"); if('\0') printf("\0\n"); char a[]="12345"; int i=0; while(a[i]) printf("%c",a[i++]); printf("\n"); - 5 -

4.2 문자열처리함수 strlen, strcpy, strncpy, strcat, strncat, strcmp, strncmp, strstr 문자열함수를사용하려면 <string.h> 을포함시켜야한다. 용도함수사용예 문자열의길이를알려주는함수 strlen( ) strlen( 문자열); 문자열을복사하는함수 strcpy( ), strncpy( ) 두문자열을이어주는함수 strcat(), strncat( ) 두문자열을비교하는함수 strcmp( ), strncmp( ) 특정문자열의위치를찾는함수 strstr( ) 참고) 약어 strlen : string length, strncpy : String Number Copy strncat : String Number Concatenate strncmp : String Number Compare strchr : string character strcpy( 문자열A, 문자열B) 문자열A 에문자열 B 를복사( 널문자포함) strcat( 문자열A, 문자열B) 문자열A다음에문자열B를이어줌 r=strcmp( 문자열A, 문자열B) 문자열A와문자열B가같다면 0 char *cp = strstr( 문자열A, 찾는문자열) 검색성공시검색된위치의포이터값( 번지) 을 반환하며, 실패시 NULL 값을반환함 l strlen( ) NULL 문자를제외한문자열의길이를알려준다. [ 예제 4.2-1] 문자열에서문자변경하기 char str1[]="12345"; char str2[]="ab"; printf("%d\n",strlen(str1)); printf("%d\n",strlen(str2)); char str[]="12345"; int len = strlen(str); int i; for(i=0;i<len;i++) printf("%c",str[i]); printf("\n"); - 6 -

2 strcpy( ), strncpy( ) strcpy( 문자열A, 문자열B) 문자열A 에문자열 B 를복사 ( 널문자포함) [ 예제 4.2-2] strcpy( ) char str[5]; strcpy(str, "ABCD"); printf("%s\n",str); char str1[]="12345"; char str2[6]; strcpy(str2, str1); printf("%s\n",str2); [ 예제 4.2-2] strcpy( ) 주의할점 < 메모> char a[4]; char b[4]; strcpy(a, "ABC"); strcpy(b, "DEFG"); printf("%s\n",b); printf("%x\n",&a); printf("%x\n",&b); - 7 -

[ 참고] strcpy() 와 memcpy() 비교 strcpy - 문자열복사를위한함수로서길이를지정안하는대신 source 문자열이반드시 '\0' 으로 끝나야함 - source 에서 '\0' 을만나면복사를종료함 ('\0' 까지복사됨) memcpy는형에관계없이임의의영역을지정한 byte 수만큼복사하는기능을수행함 예 ) char dsts[64], srcs[]="string copy"; strcpy(dsts, srcs); memcpy(dsts, srcs, strlen(srcs)+1); '\0' 까지처리하기위해복사할 size를strlen(srcs)+1 로지정해주어야함 두가지기능비교 - 둘다메모리복사란점에서는같은역할을하지만문자값을비교하여종료하느냐, - - byte 수를따져종료하느냐의차이가있음 용도가틀리다고말할수는있어도어떤것이더효율적이다라고는말하기어려움 속도의차이는통상컴파일러종류와운영체제에따라서가변사항이있음 - 보통 strcpy 보다는 memcpy가안정적임 char src1[]="abcdefg"; char dest1[20]; char dest2[20]; strcpy(dest1,src1); memcpy(dest2, src1, strlen(src1)+1); // 바이트기준 printf("%s\n",dest1); printf("%s\n",dest2); - 8 -

strncpy( 문자열A, 문자열B, n) 문자열A에문자열 B중에서 n번째까지복사 ( 주의 : NULL 문자까지복사하지않음) [ 예제 4.2-3] strncpy( ) char a[3]; strncpy(a,"abcdef",2); char a[3]; strncpy(a,"abcdef",2); a[2]=null; 3strcat(), strncat( ) [ 예제 4.2-4] 두문자열을이어주는함수 char a[15] = "star"; char b [6] = "craft"; strcat (a, b); printf("%s\n", a); printf("%s\n", b); strcat (a, b); printf("%s\n", a); printf("%s\n", b); char a[15] = "star"; char b [6] = "craft"; strncat (a, b,2); printf("%s\n", a); printf("%s\n", b); strncat (a, b,3); printf("%s\n", a); printf("%s\n", b); - 9 -

4 strcmp(), strncmp() 두문자열을비교하는함수 문자열이같다면 0 을돌려주고, 다르다면그외의숫자를돌려줌 [ 예제 4.2-5] strcmp(), strncmp() char a[]="abcd"; char b[]="abcd"; char c[]="abcf"; int r1, r2; r1=strcmp(a,b); r2=strcmp(a,c); printf("%d\n",r1); printf("%d\n",r2); char a[]="abcd"; char b[]="abcd"; char c[]="abcf"; int r1, r2; r1=strncmp(a,b,3); r2=strncmp(a,c,3); printf("%d\n",r1); printf("%d\n",r2); 5 strstr( ) 특정문자열의위치를찾는함수 검색성공시검색된위치의포이터값( 번지) 을반환하며, 실패시 NULL 값을반환함 [ 예제 4.2-6] strstr( ) < 메모> char a[]="abcd"; char *r; r=strstr(a,"cd"); if(r!=null) printf("%c\n",*r); else printf(" 못찾음\n"); - 10 -

4.3 문자열입출력함수( 콘솔입출력) 콘솔 : 키보드나모니터와같은표준입출력장치를말함 ( 1) 콘솔표준입출력함수(stdio.h): 중간에버퍼이용 - 입력버퍼( 표준입력스트림), 출력버퍼( 표준출력스트림) (2) 콘솔비표준입출력 (conio.h) : 버퍼이용하지않고직접데이터를읽어오거나출력 구분 표준입출력 <stdio.h> 비표준입출력 <conio.h> 함수사용법함수사용법 입력 getchar() char ch=getchar(); getch() getche() char ch=getch(); char ch=getche(); gets char chs[10], gets(chs); 문자열처리함수없음 출력 putchar() putchar(ch) putch() putch(ch) puts puts(chs) 문자열처리함수없음 콘솔표준입력출력함수중에서printf와scanf는생략 getchar() 와getch() 의차이점 getchar() 는엔터키를치기전까지대기, getch() 는한문자입력되면바로종료 [ 예제 4.3-1] 한문자다루기 char ch1,ch2,ch3; puts("ch1 입력"); ch1 = getchar(); putchar(ch1); puts("ch2 입력"); ch2 = getchar(); putchar(ch2); puts("ch3 입력"); ch3 = getchar(); putchar(ch3); #include <conio.h> char ch1,ch2,ch3; puts("ch1 입력"); ch1 = getch(); putchar(ch1); puts("\nch2 입력"); ch2 = getch(); putchar(ch2); puts("\nch3 입력"); ch3 = getch(); putchar(ch3); puts( ) 는 \n' 이없어도출력후에자동으로줄이넘어간다. - 11 -

[ 예제 4.3-2] 문자열다루기 char s[20]; printf(" 문자열입력 :"); gets(s); puts(s); [ 예제 4.3-3] puts와 sprintf를이용한정수형변수의문자열다루기 sprintf : 정수와문자로구성된조합을문자열로변환해줌 //printf를이용한경우 int i; for(i=0;i<10;i++) printf("[%d] : %d\n",i,i); //puts 를이용한경우 #include<conio.h> int i; char str[10]; for(i=0;i<10;i++) sprintf(str,"[%d] : %d",i,i); puts(str); [ 응용예제-1] 문자입력시 **** 표시되도록수정 #include <conio.h> char ch; printf(" 문자입력 :"); ch=getch(); putch('*'); #include <conio.h> int i; char ch[4]; //char ch[5]; //ch[4]=null; printf(" 비밀번호입력 :"); for(i=0;i<4;i++) ch[i]=getch(); putch('*'); printf("\n"); puts(ch); - 12 -

[ 응용예제-2] 비밀번호확인프로그램구현 #include<string.h> #include<conio.h> #include<string.h> #include<conio.h> int i; char PW[4]="1234"; char InPW[4]; printf(" 비밀번호입력 : "); for(i=0;i<4;i++) InPW[i]=getch(); putch('*'); if(strcmp(pw,inpw)==0) else printf("\n 성공\n"); printf("\n 실패\n"); int i; char PW[5]="1234"; char InPW[5]; InPW[4]='\0'; printf(" 비밀번호입력 : "); for(i=0;i<4;i++) InPW[i]=getch(); putch('*'); if(strcmp(pw,inpw)==0) else printf("\n 성공\n"); printf("\n 실패\n"); strcmp(a,b) : NULL문자전까지두문자열비교 - 13 -