반응형
기억 장치 관리 함수
1. 10 바이트의 기억 공간을 확보하여 "Hello" 문자열에 할당하고 출력하는 프로그램을 작성하라.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char* p; if ((p = (char*)malloc(10)) == NULL) { printf("메모리 할당 실패 \n"); return 0; } strcpy_s(p, 10, "Hello"); printf("%s",p); free(p); }
2. 5개의 변수에 대해 128 바이트 기억 공간을 확보하고, 만약 기억 공간을 할당받지 못할 경우 "메모리 할당 실패" 메시지와 함께 프로그램에서 빠져나오고, 할당받을 경우에는 한 문자열을 키보드를 통해 입력받을 수 있는 프로그램을 작성하라.
#include <stdio.h> #include <stdlib.h> //여러개의 공간을 동적할당 받는 예제. int main() { char* str[5]; for (int i = 0; i < 5; i++) { str[i] = (char*)malloc(128); } if (str == NULL) { printf("메모리 할당 실패 \n"); return 0; } else { for (int i = 0; i < 5; i++) { printf("문자열을 입력하세요 : "); scanf_s("%s", str[i], 128); } } for (int i = 0; i < 5; i++) { printf("%s \n", str[i]); } for (int i = 0; i < 5; i++) { free(str[i]); } }
문자 처리 함수
3. 키보드로부터 입력되는 문자가 숫자인지를 판별하는 프로그램을 작성하라.
#include <stdio.h> #include <ctype.h> #include <conio.h> //키보드로부터 입력되는 문자가 숫자인지를 판별하고 숫자이면 문자열에 넣는 예제 int main() { char numberstr[51]; char buffer = 0; int i = 0; while( buffer != 13 && i < 50) { // buffer = getc(stdin); //엔터를 필요로 한다. buffer = _getch(); //엔터를 필요로 하지 않는다. if (isdigit(buffer)) { _putch(buffer); _putch('\n'); numberstr[i] = buffer; i++; } else if (buffer == 13) { break; } else { printf("%c", buffer); printf("입력하시는 키가 숫자가 아닙니다. \n"); } } numberstr[i] = '\0'; printf("%s", numberstr); }
//책에 있는 예제는 매우 간단한데 직접 짜다보니 뭔가 복잡하게 만들어졌다...
4. 키보드로부터 입력되는 문자가 영문자인가를 판별하는 프로그램을 작성하라.
#include <stdio.h> #include <ctype.h> #include <conio.h> //입력된 키가 영문자인지 판별하는 프로그램. int main() { char buffer = 0; while (buffer != 27) { // ESC = 27 printf("입력된 키가 영문자인지 확인합니다. 종료하려면 ESC를 누르세요. \n"); buffer = _getch(); if (isalpha(buffer)) { printf("%c는 영문자가 맞습니다. \n", buffer); } else if(buffer == 27) { printf("종료합니다.\n"); break; } else { printf("%c는 영문자가 아닙니다. \n", buffer); } printf("\n"); } }
5. 키보드로 입력되는 문자가 소문지인지를 판별하는 프로그램을 작성하라.
#include <stdio.h> #include <ctype.h> #include <conio.h> //입력된 키가 소문자인지 판별하는 프로그램. int main() { char buffer = 0; while (buffer != 27) { // ESC = 27 printf("입력된 키가 소문자인지 확인합니다. 종료하려면 ESC를 누르세요. \n"); buffer = _getch(); if (islower(buffer)) { //소문자인지 확인하는 함수 printf("%c는 소문자입니다. \n", buffer); } else if (buffer == 27) { printf("종료합니다.\n"); break; } else { printf("%c는 소문자가 아닙니다. \n", buffer); } printf("\n"); } }
//위의 예제랑 전혀 다른게 없다.
6. 키보드로 입력되는 소문자를 대문자로, 대문자를 소문자로 변환하는 프로그램을 작성하라.
//소문자를 대문자로, 대문자를 소문자로 변환하는 프로그램. #include <stdio.h> #include <ctype.h> #include <conio.h> int main() { char str[51]; char buffer = 0; int i = 0; printf("대문자와 소문자를 변환해서 문자열을 만듭니다. \n"); while (buffer != 13 && i < 50) { buffer = _getche(); //엔터를 필요로 하지 않는다. 에코 기능이 있다. if (buffer == 13) { break; } else { if(islower(buffer)) { buffer = toupper(buffer); //소문자이면 대문자로 } else if (isupper(buffer)) { buffer = tolower(buffer); //대문자이면 소문자로 } } str[i] = buffer; i++; } str[i] = '\0'; printf("%s", str); }
반응형