1. 예정

  • 포인터(pointer)
    • 포인터 타입, 다중 포인터, 포인터 연산, void*
    • pointer as parameter
    • 배열 타입(recall)
    • 배열과 포인터의 관계
      • pointer to arrays, array of pointers
      • 프로그램 인자(argument) : int argc, char *argv[]
  • 동적 메모리 할당(dynamic allocation)
    • 프로세스 구조
    • void* malloc(size_t)
    • void free(void*)
    • calloc, realloc
  • 문자열
    • C에서의 문자열 : null-terminated string
    • string.h
      • strlen, strcmp, strchr, strstr, strcpy, strcat, strtok
      • sscanf, sprintf
  • 함수 포인터
    • void qsort(void*, void*, size_t, int(*)(void*, void*))

  • 실습
    • simpleformatter : 간단한 문자열 처리
      simpleformatter <option> <string>
      <option> :
      -r : 문자열 뒤집기
      -u : 소문자를 대문자로
      -l : 대문자를 소문자로
      -a : 알파벳만 남기기
      -n : 숫자만 남기기
      
    • 인자가 없을 경우 : 사용자 입력을 받아 처리
      • '-'가 있는 경우와 없는 경우 모두 처리해야함
      • 옵션만 있으면, 문자열만 입력 받을것

2. 진행

  • 과제 : 오늘의 실습을 python으로 구현 (3 추천)

3. 실습


  • 과제_승진
    import sys
    import re
    
    try :
        option = sys.argv[1]
        s_data = str(sys.argv[2])
    except :
        option = input()
        s_data = input()
    
    if option == '-r' :
        print(s_data[::-1])
    elif option == '-u' :
        print(s_data.upper())
    elif option == '-l' :
        print(s_data.lower())
    elif option == '-a' :
        print("".join(re.findall(r'^|[a-zA-Z]', s_data)))
    elif option == '-n' :
        print("".join(re.findall('\d+', s_data)))
      


  • 과제_창성
    #!/usr/bin/env python3
    import sys, re
    
    def switch(x):
        return {"-r": string[::-1],
                "-u": string.upper(),
                "-l": string.lower(),
                "-a": re.sub('[0-9]','',string),
                "-n": re.sub('[^0-9]','',string)}
    
    if(len(sys.argv) == 3):
        option = sys.argv[1]
        string = sys.argv[2]
    
    elif(len(sys.argv) == 2):
        option = sys.argv[1]
        string = input()
    
    else:
        option, string = input().split()
    
    print(switch(option)[option])
      

4. 기타 / 후기 / 방명록


Retrieved from http://wiki.zeropage.org/wiki.php/새싹교실/2018/C알/4월2일
last modified 2021-02-07 05:30:09