본문 바로가기

Study/C programming language

(21)
동적 메모리 할당을 이용하여 사용자로 부터 무한대의 정수를 입력 받기 사용자로 부터 입력 받은 데이터를 저장하기 위해서는 저장공간이 필요한데 사용자가 얼마만큼의 데이터를 입력할지 컴파일러는 알수가 없다. 사실 나도 그건 알수 없지 않은가 -_-; 뭐 메모리 공간을 어마어마 하게 크게 잡으면 가능 하겠지만 사용자가 그 어마어마 하게 큰 메모리 공간보다 많은 데이터를 입력 할 수도 있는 것이다. 또한 이런건 분명한 메모리 낭비다.. 이러한 문제를 해결하기 위해 메모리를 동적으로 할당 하는 수법(?)이 있다. 이 프로그램은 정수 한개만을 입력 받을수 있는 메모리 공간을 동적으로 할당해 놓고 사용자가 입력 할때마다 그 크기가 늘어 난다. #include #include void exten(int **pArr, int *pSize); int main() { int i; int in..
간단한 파일 복사 프로그램 파일의 입출력을 이용하여 원본을 그대로 복사 하는 프로그램이다. #include int main(int argc, char **argv) { char c;// For copy int state1, state2;// Check error when close file FILE *sorc, *dest;// make Source & Destination stream /* when user make error */ if(argc != 3) { puts("Usage : ./copysourcefiledestinationfile"); return -1; } /* Open source & destination file */ sorc = fopen(argv[1], "rb"); dest = fopen(argv[2], "wb..
윤성우님의 C 프로그래밍 연습문제 : 21-2 문제1] #include #include int conv_int(char a); int main() { int i, len, total = 0; char str[50]; puts("Input string"); fgets(str, sizeof(str), stdin); len = strlen(str); for(i = 0; i = 48 && str[i] = 0 && strcmp(str1, str3) >= 0) { /* str2가 두번째로 큰경우 */ if(strcmp(str2, str3) >= 0) string_sum(str1, str2, str3); /* str3이 두번째로 큰경우 */ else string_sum(str1, str3, str2); } /* str..
윤성우님의 C 프로그래밍 연습문제 : 21-1 문제1] #include char convert(char ch); int main() { char ch; ch = getchar(); ch = convert(ch); /* case of non alphabet */ if(ch == -1) { puts("error"); putchar('\n'); return -1; } putchar(ch); putchar('\n'); return 0; } char convert(char ch) { /* case of a small letter */ if(ch >= 'a' && ch = 'A' && ch = 'a' && ch ='A' && ch
윤성우님의 C 프로그래밍 도전프로그래밍 THREE [6] (야구게임) 도전2] #include #include #include int main() { int i, j; int strike = 0, ball = 0, chalge = 0; int com[3], usr[3]; srand((int)time(NULL)); /* Make for All different Game Numbers */ while(1) { for(i = 0; i < 3; i++) { com[i] = rand() % 10; } if(com[0] != com[1] && com[0] != com[2] && com[1] != com[2]) break; } printf("Play Baseball...\n"); while(strike < 3) { printf("%dst Challenge\n", chalge+1); /..
윤성우님의 C 프로그래밍 도전프로그래밍 THREE [5] (가위바위보) 도전2] 사용자로 부터 가위 바위 보 중에서 하나를 입력 받고 컴퓨터는 난수 생성을 통해 가위 바위 보 중 하나를 선택한다. 이 둘을 비교해서 승패를 출력하고 사용자가 지면 종료하고 마지막에는 게임의 결과(x승 x무)를 출력 하자. #include int main() { int i = 0, j = 0; int usr, com; char *arr[4][3] = { {"Draw", "Win", "Loss"}, {"Loss", "Draw", "Win"}, {"Win", "Loss", "Draw"}, {"Rock", "Scissors", "Paper"} }; srand((int)time(NULL)); printf("\t*The game of paper*\n"); while(1) { printf("Rock(1) ..
윤성우님의 C 프로그래밍 도전프로그래밍 THREE [2] (달팽이정렬) 도전2] 1. 여러가지 방법이 있을것 같은데 어느정도 최적화 시킨것 같다. 짜면서 이리저리 바꾸고 처음 생각 하고는 많이 달라졌지만 이틀동안 연습장에 쓰고 또 썼다 -_-;; 아무튼 달팽이 배열 재미난거 같다. ㅋ #include int main(void) { int i, j, n; int repeat, row = 0, col = -1, direct = 1, val = 1; int arr[10][10]; printf("Make N * N Snail array....\n"); printf("Input N (Max value is 10) : "); scanf("%d", &n); repeat = n; while(repeat != 0) { /* make array for row */ for(i = 0; i < ..
윤성우님의 C 프로그래밍 도전프로그래밍 THREE [1] (배열회전) 도전1] 4X4 int형 2차원 배열을 선언하고, 배열의 요소들을 오른쪽 90도씩 이동시켜서 출력하는 프로그램을 작성해 보자. #include void turn(int (*arr)[4]); int main(void) { int i, j; int n; int arr[4][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16} }; printf("How to Print Angle, input Number What you want\n"); printf("Input 0 : Print to 0° Change\n"); printf("Input 1 : Print to 90° Change\n"); printf("Input 2 : Print to 180..