1 / 55

문자열 , 구조체 정대진 (2014.08.11)

2014 ITA 8 월 강의. 문자열 , 구조체 정대진 (2014.08.11). C Programming -6 일차 -. 목차. 복습 문자열 함수 구조체 열거형. 공지 !!. 드디어 내일 휴강 !!!!!!!!!!!!!. 복습 (1). 포인터와 함수 Call-by-reference 배열까지 파라미터 가능 swap() 함수 Const 타입의 const 포인터의 const 다차원 배열 2 차원 배열 TYPE arr [ 세로길이 ][ 가로길이 ];

cicero
Télécharger la présentation

문자열 , 구조체 정대진 (2014.08.11)

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. 2014 ITA8월 강의 문자열, 구조체정대진(2014.08.11) C Programming -6일차-

  2. 목차 복습 문자열 함수 구조체 열거형

  3. 공지!! 드디어 내일 휴강!!!!!!!!!!!!!

  4. 복습 (1) • 포인터와 함수 • Call-by-reference • 배열까지 파라미터 가능 • swap() 함수 • Const • 타입의 const • 포인터의 const • 다차원 배열 • 2차원 배열 • TYPE arr[세로길이][가로길이]; • 사실은 1차원으로 메모리에 나열 • 초기화 • 1줄 초기화 • 공백 초기화 • 3차원 이상 배열도 생성 가능

  5. main()함수 파라미터 • 메인 함수에도 파라미터가 들어 올 수 있음 • 파라미터의 개수 (argc) • 파라미터 문자열 (argv) int main(intargc, char *argv[]) (0번째 파라미터는 프로그램 path) • main() 함수의 파라미터들을 모두 순서에 맞춰 출력해보세요

  6. 문자, 문자열 함수 • 스트림 • OS에 의해서 자동 생성

  7. 문자, 문자열 함수 • 스트림의 종류 • 자동 생성 • 이외의 스트림은 프로그래머가 직접 생성 • 예시 : 파일 입출력 스트림

  8. 문자, 문자열 함수 문자 입출력 함수

  9. 문자, 문자열 함수 문자 입출력 예제

  10. 문자, 문자열 함수 • EOF (End Of File) • 파일의 끝 • Windows에서 • CTRL + Z • Linux에서 • CTRD + D

  11. 문자, 문자열 함수 왜 getchar() 함수는 int형이 반환 타입인가??

  12. 문자, 문자열 함수 • puts() : 출력 후 개행 • fputs() : 출력만 함 • 문자열 입출력 함수 • 문자열 출력

  13. 문자, 문자열 함수 • gets() : 막 받음 • fgets() : 지정된 크기 만큼만남은 건 버퍼에~ • gets() : 엔터는 저장 안함 • fgets() : 엔터도 저장 문자열 입력 함수

  14. 문자, 문자열 함수 입력 버퍼가 문제가 되나요!?

  15. 문자, 문자열 함수 • 표준 입출력 버퍼 비우는 함수 • stdin • 입력 버퍼에 남아 있는 데이터의 소멸 • fflush()는 사실 출력버퍼를 위한 함수라서 결과를 보장받지 못함 • stdout • 출력 버퍼에 저장된 데이터를 목적지로 최종 전송

  16. 문자, 문자열 함수 입력 버퍼 삭제

  17. 문자, 문자열 함수 문자열 길이 함수

  18. 문자, 문자열 함수 문자열 복사 함수

  19. 문자, 문자열 함수 문자열 복사 함수

  20. 문자, 문자열 함수 문자열 덧붙임 함수

  21. 문자, 문자열 함수 • 문자열 비교 함수 • 비교 크기는 ASCII 코드 값 • intstricmp(const char *string1, constchar *string2); • intstrnicmp(constchar *string1, constchar *string2, size_t count);

  22. 문자, 문자열 함수 #include <stdio.h> #include <string.h> void main(void) {      char str[256];      char *ptr; int count=0; printf("아무 문자나 입력하세요 "); scanf("%s",str);      for (ptr=str;;) { ptr=strchr(ptr,'a');           if (ptr == NULL) {               break;           }           count++; ptr++;      }  printf("문자열에 a가 %d개 있습니다.\n",count); } char *strchr(const char *string, int c); char *strrchr(constchar *string, int c); 문자 검색 함수

  23. 문자, 문자열 함수 char *strstr(cont char *string, const char *strSearch); char *strpbrk(const char *string, const char *CharSet); 문자열 검색 함수

  24. 문자, 문자열 함수 char *strtok(char *strToken, const char *strDelimit); #include <Turboc.h> #include <string.h> void main() {      char str[]="I am a boy,you are a girl";      char *p;      p=strtok(str," ,");      while (p!= NULL) {           puts(p);           p=strtok(NULL," ,");      } } 문자열 검색 함수 (문자열 토큰 나누기) <공백, 컴마>

  25. 문자, 문자열 함수 char *strtok(char *strToken, const char *strDelimit); • strcpy(str2,str); • strlwr(str2); • printf("strlwr => %s\n",str2); • strcpy(str2,str); • strrev(str2); • printf("strrev => %s\n",str2); • strcpy(str2,str); • strset(str2,'*'); • printf("strset => %s\n",str2); • } • #include <stdio.h> • #include <string.h> • void main(void) • { •      char str[]="Made In Korea"; •      char str2[16]; • strcpy(str2,str); • strupr(str2); • printf("strupr => %s\n",str2); 문자열 변환 함수

  26. 문자, 문자열 함수 부수적 문자열 함수 1(ctype.h)

  27. 문자, 문자열 함수 부수적 문자열 함수 2(stdlib.h)

  28. 프로그래밍 실습 사용자가 입력한 문자열로부터 특정 문자열을 찾아서 바꿔 출력하는 프로그램을 작성하시오.

  29. 구조체 • 구조체 • 우리가 알고 있는 자료형을 통해 조합한 새로운 자료형

  30. 구조체 구조체 변수 선언

  31. 구조체 구조체 변수의 멤버 접근 방식

  32. 프로그래밍 실습 점의 (x,y,z) 좌표를 저장하는 구조체를 선언하고,이 구조체를 이용하여 두 점의 좌표를 입력 받고,두 점 사이의 거리를 출력하는 프로그램을 작성하시오

  33. 구조체 구조체 정의와 동시에 변수 선언

  34. 구조체 • 구조체 변수의 초기화 • 배열 초기화와 비슷

  35. 구조체 구조체 배열의 선언과 접근

  36. 구조체 구조체 배열의 초기화

  37. 구조체 구조체 배열의 초기화 예제

  38. 구조체 구조체 변수와 포인터

  39. 구조체 구조체 변수와 포인터 예제

  40. 구조체

  41. 구조체 struct tag_A {      int i;      tag_B B; }; struct tag_A {      int i;      tag_A *pA; }; structtag_A { inti; tag_A A; }; structtag_B {      double d; tag_A A; }; 중첩 구조체

  42. 구조체 포인터 변수 멤버

  43. 구조체 구조체 변수와 첫 번째 멤버의 주소 값

  44. 구조체 (typedef) • 구조체 응용 TYPE을 정의

  45. 구조체

  46. 구조체 typdef구조체 이름 생략

  47. 구조체 • 함수 파라미터로의 구조체 • 구조체가 통째로 파라미터 전달 • 구조체가 통째로 반환 • 배열이 멤버라면 배열까지 복사 • 여러 개의 변수 같지만사실 하나의 변수로 인식 • Call-by-reference도 가능

  48. 구조체 • 구조체 대상의 연산 • 구조체끼리 덧셈 뺄셈 등의 계산은 불가능 • 원하면 정의해야 함

  49. 구조체 struct Friend {      char *pName; int Age;      double Height; }; void main() { structFriend Albert={NULL,80,165.0}; • structFriend Kim; Albert.pName=(char *)malloc(32); strcpy(Albert.pName, "알버트 아인슈타인");      Kim=Albert; printf("이름=%s, 나이=%d, 키=%.1f\n", Kim.pName,Kim.Age,Kim.Height); strcpy(Albert.pName,"아이작 뉴튼"); printf("이름=%s, 나이=%d, 키=%.1f\n", Kim.pName,Kim.Age,Kim.Height);      free(Albert.pName); } 구조체의 얕은 복사

  50. 구조체 struct Friend {      char *pName; int Age;      double Height; };  void main() { structFriend Albert={NULL,80,165.0}; • structFriend Kim; Albert.pName=(char *)malloc(32); strcpy(Albert.pName, "알버트 아인슈타인");      Kim=Albert; Kim.pName = (char*)malloc(strlen(Albert.pName)+1); strcpy(Kim.pName, Albert.pName); printf("이름=%s, 나이=%d, 키=%.1f\n", Kim.pName,Kim.Age,Kim.Height); strcpy(Albert.pName,"아이작 뉴튼"); printf("이름=%s, 나이=%d, 키=%.1f\n", Kim.pName,Kim.Age,Kim.Height);      free(Albert.pName); free(Kim.pNmae); } 구조체의 깊은 복사

More Related