PA for SWE2007

Similar documents
PA0 for SSE2033

PA for SWE2007

슬라이드 1

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>


PowerPoint 프레젠테이션

YRRZBRRLMCEQ.hwp

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

Microsoft PowerPoint - 제9강 문자열

11장 포인터

untitled

Computer Programming (2008 Fall)

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

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

PA for SWE2007

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

설계란 무엇인가?

歯7장.PDF

chap7.PDF

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

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

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

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

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

Microsoft PowerPoint - chap06-2pointer.ppt

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

Microsoft PowerPoint - ch07 - 포인터 pm0415

11장 포인터

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

슬라이드 1

PowerPoint 프레젠테이션

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

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

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

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

C++ Programming

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

11장 포인터

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

본 강의에 들어가기 전

Microsoft PowerPoint - C++ 5 .pptx

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

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

PowerPoint Presentation

PowerPoint Template

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

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - chap06-8.ppt

C# Programming Guide - Types

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

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

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

OCW_C언어 기초

C 프로그래밊 개요

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

6주차.key

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - chap-12.pptx

Microsoft PowerPoint - Lesson2.pptx

11장 포인터

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A632B0AD20BAAFBCF6BFCD20C0DAB7E12C20C0FCC3B3B8AEBFCD20C0D4C3E2B7C2>

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

PowerPoint Presentation

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

11장 포인터

<4D F736F F F696E74202D D20B9AEC0DABFAD2C20BDBAC6AEB8B2B0FA20C6C4C0CF20C0D4C3E2B7C2>

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

PowerPoint 프레젠테이션

제1장 Unix란 무엇인가?

Microsoft PowerPoint - 7_배열_문자열

설계란 무엇인가?

Chapter #01 Subject

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

02장.배열과 클래스

Infinity(∞) Strategy

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint - 10장 문자열 pptx

<4D F736F F F696E74202D D20B9AEC0DABFAD2C20BDBAC6AEB8B2B0FA20C6C4C0CF20C0D4C3E2B7C2>

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

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

PowerPoint 프레젠테이션

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

중간고사

1장. 유닉스 시스템 프로그래밍 개요

Adobe Flash 취약점 분석 (CVE )

슬라이드 1

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

PowerPoint 프레젠테이션

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

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

PowerPoint Presentation

Transcription:

Programming Assignment #0: Making own "my_string.h" SWE2007: Software Experiment II (Fall 2016) Due: 21st Sep. (Wed), 11:59 PM 1. Introduction 이번과제에선, 앞으로있을다른과제들을수행하기위한필요할함수들을구현한다. 그대상은, 문자열조작 / 검사 / 변환함수들을담은 C 표준라이브러리의 <string.h> 를비롯한헤더파일의일부함수이다. 그리고본과제의다른목적은학생이각자독자적인 Linux 환경을갖추는것이다. 또한, 간단한문자열및포인터조작을통해향후원활한과제수행을돕고자한다. 2. Problem specification 본과목에서과제를수행할때, Linux 시스템콜과같은일부특수한함수들을제외하곤 C 표준라이브러리나다른라이브러리함수들을사용하는것이허락되지않는다. 따라서자신이필요한함수들을직접구현해야하는데, C 표준라이브러리의 <string.h> 를비롯한문자열을이용하는함수들은앞으로거의모든과제에서필요할것이기때문에, Linux 환경에서이함수들을직접구현해본다. 또한, 향후과제에서본인이필요한함수는 my_string.c 및.h에구현하여사용할수있다. 구현할함수와각함수의기능은다음과같다. 각함수들은 C 표준함수들이제공하는기능과 100% 동일하게구현하면되고, 다른기능을추가할필요는없다. (C 표준함수의경우, 정확한함수정의를찾는방법은수업시간에설명한대로리눅스매뉴얼 페이지 man 을사용하도록한다. 밑줄을친함수들은 C 표준함수가아님을뜻하고, 해당함수들 에대한정의는 Section 2.1. 에서설명한다.)

Conversions string to numeric formats: int my_atoi (const char *nptr); - 문자열 str을정수형 int로변환하여출력 long my_atol (const char *nptr); - 문자열 str을정수형 long으로변환하여출력 Conversions numeric formats to string: char *int2str (char *dest, int num); - 정수형 num을문자열로변환한뒤문자열버퍼 dest에저장 - [int:-543210 C string:"-543210"] String manipulation: char *strcpy (char *dest, const char *src); - 문자열 src를문자열버퍼 dst로복사 char *strncpy (char *dest, const char *src, size_t n); - 문자열 src에서 count 바이트만큼문자열버퍼 dst로복사 char *strcat (char *dest, const char *src); - 문자열 dst의뒤에, 문자열 src을붙임 char *strncat (char *dest, const char *src, size_t n); - 문자열 dst의뒤에, 문자열 src를 count 바이트만큼붙임 char *strdup (const char *str); - 문자열 str을동적으로할당받은메모리에 (malloc 등 ) 복사한뒤해당주소를반환 char *int2str (char *dest, int num); 숫자 num을 C 문자열형태로바꿔 dest에저장하고, 변환된문자열을반환한다. ( 일반적인경우, 반환값은 dest가될것이다.) 즉, 바뀐문자열이반환된다는점을제외하면, 다음함수호출과동일한행동이수행되어야한다 : sprintf(dest, "%d", num); 예외 ) 인자 dest가 NULL일경우, 동적으로메모리를받고해당주소에변환한문자열을저장한다음, 그주소를반환한다. 동적메모리할당에실패하면 NULL을반환한다. 힌트 ) int형을문자열로변환할경우, 최악의경우 NULL 캐릭터를포함하여 char[12] 버퍼가필요하다.

String examination: size_t strlen (const char *s); - 문자열 s의길이를반환 int strcmp (const char *s1, const char *s2); - 문자열 s1, s2를비교 int strncmp (const char *s1, const char *s2, size_t n); - 문자열 s1, s2를최대 n 바이트만비교 char *strchr (const char *s, int c); - 문자열 s에서문자 c가처음나타나는위치를찾음 char *strrchr (const char *s, int c); - 문자열 s에서문자 c가마지막으로나타나는위치를찾음 char *strstr (const char *haystack, const char *needle); - 문자열 haystack에서부분문자열 needle이처음으로등장하는위치를찾음 char *strtok (char *str, const char *delim); - 문자열 str에서 문자열 delim의아무문자 가등장하는위치를찾고, token화함 Character array manipulation: void *memcpy (void *dest, const void *str, size_t n); - 메모리주소 str에서 n 바이트만큼메모리주소 dest로복사 void *memset (void *dest, int ch, size_t count); - 메모리주소 [dest. dest+count) 의값을 ch 로변경 char *strdup (const char *str); 동적으로메모리를할당받고, 해당주소에문자열 str의내용을복사한뒤, 해당주소를반환한다. 예외 ) 메모리를동적으로할당받을수없다면, NULL을반환한다. 참고 ) $ man 3 strdup 3. Skeleton codes 이번과제수행을위해다음 3 개의파일이주어진다 : my_string.h: my_string.c: test.c: 본과제에서지정한함수들이들어있는헤더파일 본과제에서지정한함수들의구현파일 구현한함수들의디버깅용파일

Skeleton codes 들은전부 C library 함수를단순히 wrapping 하는꼴로이루어져있으며, 이를자신만의코드로바꾸어야한다. 4. Verification of your code 제공한 test.c 파일을이용해각자자유롭게자신들이만든함수가라이브러리함수와동 일한지비교할수있다. 예시는아래와같다. #include <stdio.h> #include <string.h> #include <stdlib.h> #include "my_string.h" int main() { char str1[20] = "Hello"; char str2[20] = "world!"; printf("<strlen> str1: %zu\n", strlen(str1)); printf("<strlen> str1: %zu\n", my_strlen(str1));... } return 0; 5. Background 5.1. Man page 본과목의과제를수행하며 man page (manual pages) 를참고할수있다. man page는 Unix-like 환경에서제공하는참고용매뉴얼프로그램이다. 어떤함수의정의나프로그램의역할이궁금하면셸에서다음커맨드를입력함으로써정보를찾아볼수있다. $ man <COMMAND_OR_FUNCTION_NAME> 예를들면, strlen 함수에대한정의를찾아보고싶을땐, "$ man strlen" 을입력한다. printf 와같은함수는동명의프로그램과라이브러리함수가같이존재하는데, 이럴경우엔라 이브러리섹션을지정해서 man 프로그램을호출한다. ( 참고 : http://en.wikipedia.org/wiki/man_page)

$ man 3 printf 만약 man 프로그램이제대로동작하지않을경우, Ubuntu 의경우다음명령어를입력함으로써 라이브러리에대한매뉴얼을다운로드할수있다. 다음명령수행엔관리자권한이필요하다. $ sudo apt-get install manpages-dev manpages-posix-dev 5.2. C References C 라이브러리함수에대한 reference는다음사이트를참고한다 : http://www.cplusplus.com/reference/clibrary/ http://en.cppreference.com/w/ 6. Restrictions 함수구현시 malloc(), calloc(), free() 함수를제외한다른라이브러리함수는사 용할수없다. 필요하다면, 직접구현하여사용한다. 7. Hand in instruction 작성한코드상단의주석에이름과학번을작성한다. 압축파일에본인의 Linux 환경에대한스크린샷을첨부한다. Linux 셸에서다음 3 가지명령을실행시킨결과를같이첨부한다. $ cat /proc/version $ cat /etc/issue $ lsb_release -a test.c 파일을제외하고, my_string.c, my_string.h, screenshot 총 3 개의파일을 tar 로압축한 다. 이때, 압축하는파일이름은반드시본인번호로한다. 번호는과목홈페이지의 Assignments 탭의가장아래에표시되어있다. Ex) 번호가 3 인경우, $ tar -cvzf 3.tar.gz my_string.c my_string.h screenshot 과제를제출하기위해 [swe2007.2016@gmail.com] 주소로메일을보낸다. 메일전송시 압축한 tar 파일하나만첨부하도록하며, 메일제목은다음과같이명명한다 : 번호이름 PA#0

8. Logistics 본과제는혼자수행한다. 질문또한 swe2007.2016@gmail.com에메일로보내며, 질문을경우메일제목에필히 [ 질문 ] 의태그를붙이도록한다. 제출상태는과목홈페이지 http://csl.skku.edu/swe2007f16/projects 에즉각적으로공지될것이다. 과제제출시간은메일도착시간을기준으로하며, 과제를지연제출하면기한직후부터매일마다점수를 20% 씩추가로감점한다. 다른사람의과제를 copy할경우, 개입한사람전부해당과제에대해 0점처리되고, 교수님께보고되며, 성적산정에불이익이있다. 또한, copy가적발될경우 F학점이부여될수있다. Warming up! Dong-Yun Lee, TA Computer Systems Laboratory, Sungkyunkwan Univ.