반응형

언어 자료구조 알고리즘/디딤돌 C언어 150

[C언어] 100. main함수 매개변수

100. main 함수 매개변수 이번에는 main 함수 매개 변수를 사용하는 방법을 살펴보아요. main 함수는 프로그램 진입점 함수로 프로그램의 개발자가 작성한 코드 중에서 제일 먼저 수행하죠. main 함수는 시작하면서 인자와 환경 변수를 받아 사용할 수 있고 종료 결과를 반환할 수 있어요. int main(int argc,char **argv, char **env); main 함수는 전달한 인자와 환경변수를 선택적으로 사용할 수 있어서 개발자는 다양한 형태의 원형을 갖는 main 함수 중에 한 가지 형태로 정의하여 사용할 수 있어요. int main(int argc, char **argv, char **env); void main(int argc, char **argv, char **env); in..

[C언어] 98. 파일 입출력 ftell, fseek

98. 파일 입출력 - ftell, fseek 이 외에도 입출력 작업의 위치를 확인하는 ftell 함수와 작업 위치를 변경하는 fseek 함수 등이 있어요. long ftell(FILE * fp); int fseek(FILE * fp, long offset, int origin); ftell 함수는 입력 인자로 입출력 작업 FILE *를 전달하면 작업 위치를 반환하는 간단한 함수예요. fseek함수는 FILE *외에도 세번째 인자로 기준이 되는 매크로 상수와 두번째 인자로 기준에서의 상대적 위치(음수도 가능)를 전달하여 작업 위치를 설정할 수 있어요. 세번째 인자로 들어가는 인자는 시작 위치를 의미하는 매크로 상수 SEEK_SET, 현재 위치를 의미하는 SEEK_CUR, 끝을 의미하는 SEEK_END가 ..

[C언어] 97. 바이너리로 파일 입출력

97. 바이너리로 파일 입출력 이번에는 메모리를 덤프하는 입출력 함수를 살펴볼게요. size_t fread(void * buf, size_t element_size, size_t count, FILE * fp); size_t fwrite(void * buf, size_t element_size, size_t count, FILE * fp); 메모리를 덤프하는 입출력 함수는 내용을 그대로 파일 입출력하는 함수들이예요. 메모리 덤프하는 입출력 함수는 fread와 fwirte 함수가 있어요. 두 함수는 입출력 방향이 메모리에서 파일스트림과 파일스트림에서 메모리라는 점이 다를 뿐이며 함수 원형이 같아요. 두 함수의 입력 인자는 data를 읽거나 쓸 buf의 주소, 요소 크기, 요소 개수, 파일 스트림이예요. 그..

[C언어] 96. ASCII 문자로 파일 입출력

96. ASCII 문자로 파일 입출력 표준 입출력 함수는 크게 ASCII 문자로 입출력하는 함수들과 메모리를 덤프하는 입출력 함수가 있어요. 이제까지 계속 사용했던 scanf, printf 함수 등은 ASCII 문자로 입출력하는 함수들이예요. ASCII 문자로 입출력할 때 사용하는 주요 함수를 알아봅시다. int fscanf(FILE * fp, const char * format, ...); int fscanf_s(FILE * fp ,const char *format,...); int fgetc(FILE * fp); char * fgets(char * buf, int max_count, FILE * fp); int fprintf(FILE * fp, const char * format, ...); int ..

[C언어] 95. 파일 입출력 - fopen,fclose

95. 파일 입출력 - fopen, fclose 이번에는 표준 입출력 라이브러리 사용 방법을 살펴볼게요. C언어에서는 파일 입출력을 할 수 있게 표준 입출력 라이브러리와 콘솔 입출력 라이브러리 등을 제공하고 있어요. 개발자가 O/S에서 제공하는 시스템 호출을 사용해서 파일 I/O 작업을 할 수도 있어요. 하지만 시스템 호출은 섬세한 제어가 필요하죠. 파일 입출력 라이브러리를 사용하는 것으로도 대부분 처리가 가능해요. 파일 입출력 작업을 하려면 먼저 작업할 파일을 열고 마친 후에는 닫아야겠죠. 표준 입출력 라이브러리에서는 원하는 파일을 열 때 사용하는 여러가지 함수를 제공하는데 대표적인 함수가 fopen이예요. FILE * fopen(const char * path, const char *mode); er..

[C언어] 94. 동적 배열 사용하는 예제 코드

94. 사용하는 예제 코드 ◈ Program.c #include #include "Member.h" #include "EHArray.h" Member *MakeMember(int nth); void ExampleSeq(); void ExampleIndex(); int main() { ExampleSeq(); ExampleIndex(); return 0; } Member *MakeMember(int n) { char name[MAX_NAME_LEN+1]=""; printf("%d 번 회원 이름 입력:",n); scanf_s("%s",name); return NewMember(n,name); } void InputSeq(EHArray *arr); void ViewSeq(EHArray *arr); void E..

[C언어] 93. 동적 배열 사용 예 - 인덱스로 보관

93. 동적 배열 사용 예 - 인덱스로 보관 보관할 데이터의 개수가 정해져 있고 특정 키에 따라 보관할 인덱스를 결정할 수 있다면 GetAt, SetAt 함수를 이용하세요. 동적 배열을 생성할 때 최대 보관할 저장소의 크기와 초기값 0을 인자로 전달하세요. int max = 0; printf("최대 관리할 회원 수를 입력하세요.\n"); scanf_s("%d",&max); arr = NewEHArray(max,0); 보관할 때는 SetAt을 이용하고 검색할 때는 GetAt을 이용하세요. 보관한 자료를 확인할 때는 GetAt 함수를 이용하는데 보관한 형식으로 형변환하여 사용하세요. EHArraySetAt(arr,i,member); member = (Member *)EHArrayGetAt(arr,i); Me..

[C언어] 92. 동적 배열 사용 예 - 순차 보관

92. 동적 배열 사용 예 - 순차 보관 먼저 순차적으로 보관하는 간단한 실습을 해 보아요. 순차적으로 보관할 때는 배열을 생성할 때 초기 저장소의 크기를 0으로 설정하세요. EHArray *arr = 0; arr = NewEHArray(0,0); 자료를 보관할 때는 PushBack 함수를 이용하세요. EHArrayPushBack(arr,member); 보관한 자료를 확인할 때는 Begin함수와 End함수를 이용해 얻어온 Iterator 개체를 이용하세요. Iterator의 간접 연산을 취하면 보관한 형식 개체를 참조할 수 있어요. 주의할 점은 자신이 보관한 형식으로 명시적 형변환을 취해야 한다는 거예요. Iterator seek; Iterator end; Member *member = 0; seek =..

[C언어] 91. 동적 배열 사용 예 - 동적 개체 정의

91. 동적 배열 사용 예 - 동적 개체 정의 테스트를 위해 사용할 자료는 회원 번호와 이름을 멤버로 갖는 회원 데이터로 할게요. typedef struct _Member Member; #define MAX_NAME_LEN 20 struct _Member { int mnum; char name[MAX_NAME_LEN+1]; }; 그리고 동적으로 생성하는 함수, 소멸하는 함수, 출력하는 함수를 제공하세요. ◈ Member.h #pragma once typedef struct _Member Member; #define MAX_NAME_LEN 20 struct _Member { int mnum; char name[MAX_NAME_LEN+1]; }; Member *NewMember(int mnum,const c..

반응형