본문 바로가기

지난 학기들의 기록/C 기초21

[C실습] 포인터 유형 분석 1 - 조건부 정렬 포인터를 이용한 중복검사와 정렬 심화학습 이번에 제시된 과제를 리뷰하다가 포스트로 남기고 싶은점이 있어서 글을 쓰게 되었습니다. 정렬이나 중복검사 등 꾸준히 다뤄왔던 개념이었지만, 메모리조건으로 배열변수 생성에 제한을 둔다던가 포인터 사용을 강제하는 조건으로 같은 문제를 해결할때 익숙하지 않은 부분이 있게 되었습니다. 과제에 제시된 문제중 가장 고민을 했던 문제를 먼저 해결해보고 그 뒤에 문제 조건을 좀 더 심화하여 풀어보겠습니다. 문제 1. 두 배열을 포인터를 이용해 큰값과 작은값으로 분리하라 문제설명 두개의 배열에 정수를 입력받은 뒤에 각 배열의 원소의 개수를 계산합니다. 그 값을 n(배열A의 개수)과 m(배열B의 개수)이라 하겠습니다. 두 배열의 원소들중 큰 값들은 A배열로, 작은 값들은 B배열로 .. 2020. 9. 18.
[C실습] 파일 입출력 예제 - 특정 문자열 검색하기 파일 입출력 예제 제시된 텍스트 파일에서 특정 문자열을 검색하고, 등장한 문자열과 그 행을 출력하시오 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #pragma warning(disable:4996) #include #include #include int main() { FILE* fp; char str[100],ans[100]; int num = 0,pass=0; printf("검색할 단어를 입력하세요:"); gets(ans); //파일열기 fp = fopen("sample.txt", "r"); if (fp == NULL) { printf("파일 읽기모드 열기에 실패했습니.. 2020. 8. 27.
[C실습] 동적할당 예제 - realloc함수를 쓰지않고 배열의 크기 바꾸기 realloc함수를 쓰지않고 배열의 크기를 변경하기 realloc함수를 쓰지않고 malloc함수만을 이용해서 배열의 크기를 조건에 맞게 변경하는 프로그램을 작성하는 예제를 풀이해보겠습니다. 예제1. 초기배열의 크기를 넘어선 입력시 배열의 크기를 증가시켜라 #pragma warning(disable:4996) #include #include #include void size_add(int* s, int* arr); int main() { //size가 5인 배열 생성 int* Np; int i = 0; int size = 5; Np = malloc(sizeof(int) * size); scanf("%d", &Np[0]); if(Np[0]!=-1){ for(i=1;;i++) { scanf("%d", &Np[.. 2020. 8. 22.
[C실습] 동적할당예제 - 2차원 배열 활용 동적메모리 할당예제 - 2차원 배열 2차원 배열에 메모리를 할당하기 위해서는 이중포인터를 활용해야합니다. 1차원 배열의 메모리 할당과는 다르게 두가지 스텝으로 분류해서 이 과정을 이해할수 있습니다. 먼저 2차원 배열의 행과 열을 row (행), column(열)로 두었을때 선행되는 작업은 row 행만큼 정수형 포인터의 메모리를 할당하는 것입니다. d_Array= malloc(sizeof(int *) * row) // 1차원 배열을 row개 만큼 메모리 할당한다고 이해할수 있습니다. 그리고 할당된 row개의 메모리 공간에 가로길이 col 만큼(열에 해당) 메모리를 할당해줍니다. 이 각각은 1차원 배열이므로 기존에 알고있던 배열의 메모리할당을 떠올리면 쉽습니다. for(int i=0;i행 , column -.. 2020. 8. 21.