필수실습문제)
12-1) 문자열을 복사하는 함수 만들기
#include <stdio.h>
int main(int argc, char *argv[]) {
char szBufferSrc[12] = {"Test String"};
char szBufferDst[12] = {0};
MyStrcpy(szBufferDst, sizeof(szBufferDst), szBufferSrc);
puts(szBufferDst);
return 0;
}
메모리의 주소 두 개를 매개변수로 받아 문자열을 복사(deep copy)하는 함수인 MyStrcpy() 함수를 작성합니다.
main() 함수의 코드와 실행결과가 위와 같을 때, 정상적으로 작동할 수 있도록 구현합니다. 기능적으로 MyStrcpy() 함수는 strcpy() 혹은 strcpy_s() 함수와 같습니다.
연습문제)
1) 매개변수로 검색 대상 문자열이 저장된 메모리의 주소와 그 대상 문자에서 찾고 싶은 문자열이 저장된 메모리의
주소를 받아 검색에 성공하면 대상 메모리에서 찾고자 하는 문자열이 저장된 위치의 인덱스를 반환하는 함수를
작성하세요. 기능적으로는 strstr() 함수와 같지만, 반환하는 자료형은 char *가 아니라 대상 메모리에 대한 인덱스를
정수형으로 반환해야 합니다. 만일 찾는 문자열이 없다면 -1을 반환하는 함수로 정의합니다.
Q )
2) 매개변수로 char*의 배열이름과 요소의 개수를 인수로 받아 오름차순으로 문자열을 정리하는 SortString() 함수를
작성하세요. 다음과 같은 main() 함수의 코드에 대한 출력 예를 참고하여 작성합니다.
#include <stdio.h>
int main(void) {
char* aList[5] = { "정형돈", "노홍철", "하하", "유재석", "박명수" };
int i = 0;
SortString(aList, 5);
for(i = 0; i < 5; i++) {
puts(aList[i]);
}
return 0;
}
Q )
3) int형 5행 4열 배열에서 각 요소의 총합을 계산하여 반환하는 GetTotal() 함수를 작성하세요.
Q)
- 다차원 배열의 포인터를 어떻게 써야할지 기억이 안나 한참 해맴...
4) 매개변수로 char* 두 개를 받아 각 포인터가 가리키는 대상 문자열이 같은 문자열인지 비교하는 함수를 작성합니다.
만일 같으면 0을 반환하고 그렇지 않으면 1을 반환합니다. 기본적인 기능은 strcmp() 함수와 같습니다.
단, 영문 대/소문자를 구별하지 않고 비교합니다. 따라서 'h'와 'H'를 같다고 인식해야 합니다.
Q )
5) 난수를 구하는 함수를 사용하여 가위바위보 게임을 구현합니다. 0~2 범위의 숫자를 발생시켜서
0은 '가위', 1은 '바위', 2는 '보'라고 가정합니다. 게임 방식은 사용자로부터 0~2 범위의 정수를 입력받은 후,
이에 대응하는 0~2 범위의 난수를 발생시켜 사용자가 입력한 정보와 비교하는 방식으로 게임을 진행합니다.
반드시 사용자, 컴퓨터가 선정한 것이 무엇이며 누가 승자인지 표시해야 합니다.
Q )
실행 결과
6) 오늘을 기준으로 10일 후와 100일 후의 날짜를 계산하여 출력하는 프로그램을 작성하세요.
Q )
실행 결과
- 출처 : 독하게 시작하는 C 프로그래밍 (최호성, 루비 페이퍼)
'Programming > C language' 카테고리의 다른 글
Chapter 14. 파일 입출력 (0) | 2017.07.03 |
---|---|
Chapter 13. 구조체와 공용체 (0) | 2017.07.02 |
Chapter 12. 함수 응용 (내용 요약) (0) | 2017.06.30 |
Chapter 11. 메모리와 포인터 (문제풀이) (0) | 2017.06.29 |
chapter 11. 메모리와 포인터 (내용요약 - 3) (0) | 2017.06.29 |