고흐의 연구실/C언어와 C++ 27

[C++] 코딩테스트 연습중 ㅎㄷㄷ..

주로 쓰는 언어가 C였다가.. Java랑 C를 쓰다가.. 군대가서 컴퓨터와 멀어지고 전역전에 파이썬으로 코딩테스트 준비하다가,,.. 다시 C를 열심히 쓰는데... C++ 공부의 필요성을 느끼지만, C로 버텨왔는데... 코딩테스트를 C로하려고하니 C++의 STL을... 봐버렸다 0o0 그래서... 이렇게 갈아..타..는.....중........... 기본적으로 코테에 들어가있는게 벡터(Vecter) 형식 >> 벡터를 좀 자세하게 알아야 겠다. 일단 간단하게 정리를 하자면 #include // 헤더파일 선언! vector 벡터명; vector v; // 초기화 안된 변수 선언 vector v1(5); // 5개의 원소를 가진 벡터(초기화는 0으로 됨 -> 이게 디폴트 값) vector v2(5, 7); //..

[C언어] 조건부 컴파일 #ifdef #endif #if #ifndef

#ifdef에 매크로를 지정하면 해당 매크로가 정의되어 있을 때만 코드를 컴파일합니다. #ifdef 매크로 코드 #endif example) #include #define DEBUG // DEBUG 매크로 정의 int main() { #ifdef DEBUG // DEBUG 매크로가 정의되어 있다면 #ifdef, #endif 사이의 코드를 컴파일 printf("Debug: %s %s %s %d\n", __DATE__, __TIME__, __FILE__, __LINE__); #endif return 0; } >> 결과 : Debug: Oct 6 2015 23:30:18 c:\project\hello\conditional_compile\conditional_compile.c 8 #if로 값 또는 식을 판별하여..

[C언어] 매크로 #define #undef

#define 지시자는 값을 다른 이름으로 정의하며 이름을 짓는 방법은 변수와 같습니다. 보통 매크로는 대문자를 사용합니다. #define 매크로이름 값 define 은 변수명을 지정하듯 사용해도 된다고 생각하면 될 듯합니다. #define으로 정의한 매크로는 다른 이름으로 다시 정의할 수 있습니다. #define ARRAY_SIZE 10 // 10을 ARRAY_SIZE로 정의 #define DEFAULT_ARRAY_SIZE ARRAY_SIZE // ARRAY_SIZE를 DEFAULT_ARRAY_SIZE로 정의 #define으로 정의한 매크로를 해제하고 싶을 때는 #undef를 사용합니다. #undef 매크로이름 #define은 함수 모양의 매크로도 정의할 수 있습니다. #define 매크로이름(x) 함..

[C언어] 파일관련(3) 파일구조체 fwrite(), fread()

fwrite(버퍼, 쓰기크기, 쓰기횟수, 파일포인터); size_t fwrite(void const *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream); 성공한 쓰기 횟수를 반환, 실패하면 지정된 쓰기 횟수보다 작은 값을 반환 ㅇ Example #define _CRT_SECURE_NO_WARNINGS // fopen 보안 경고로 인한 컴파일 에러 방지 #include // fopen, fwrite, fclose 함수가 선언된 헤더 파일 #pragma pack(push, 1) // 1바이트 크기로 정렬 struct Data { short num1; // 2바이트 short num2; // 2바이트 short num3; // 2바이트 sh..

[C언어] 파일관련(2) 파일 크기 구하기 fseek(), ftell(), feof()

fseek(파일포인터, 이동할크기, 기준점); int fseek(FILE *_Stream, long _Offset, int _Origin); 성공하면 0, 실패하면 -1을 반환 fseek(fp, 0, SEEK_SET); = rewind(fp) ftell(파일포인터); long ftell(FILE *_Stream); 파일 포인터의 현재 위치를 반환, 실패하면 -1을 반환 ㅇExample #define _CRT_SECURE_NO_WARNINGS // fopen 보안 경고로 인한 컴파일 에러 방지 #include // fopen, fseek, ftell, fclose 함수가 선언된 헤더 파일 int main() { int size; FILE *fp = fopen("hello.txt", "r"); // hell..

[C언어] 파일관련(1) fopen(), frpintf(), fclose(), fscanf()

C언어를 배우면 콘솔창에서만 입력받고 출력하고를 먼저 배운다. 이후에는 파일을 가져오고 읽고... 한다! 파일에 문자열을 쓸 때는 먼저 fopen()으로 파일 포인터를 얻은 뒤 fprintf()를 사용한다. 헤더파일 : stdio.h FILE *포인터이름 = fopen(파일명, 파일모드); FILE *fopen(char const *_FileName, char const *_Mode); 성공하면 파일 포인터를 반환, 실패하면 NULL을 반환 fprintf(파일포인터, 서식, 값1, 값2, ...); int fprintf(FILE * const _Stream, char const * const _Format, ...); 성공하면 쓴 문자열의 길이를 반환, 실패하면 음수를 반환 fclose(파일포인터); i..

[C언어] 복합 리터럴, 배열 매개변수 요소의 최소 개수 지정

ㅇ복합 리터럴이란??? 복합 리터럴은 C99에 추가된 기능이다. 함수에 배열을 넘겨줄 때 복합 리터럴을 사용하면, 배열을 따로 선언하지 않아도 됨. (자료형[]){값1, 값2, 값3} (자료형[크기]){값1, 값2, 값3} - 예제 #include void printArray(int arr[], int count) { for (int i = 0; i < count; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { // 복합 리터럴 방식으로 배열을 넘겨줌 printArray((int[]) { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 10); return 0; } 예제를 보면, 매개변수에 배열을 넣어주는데, 이것을 복합 리터럴 이..

[C언어] 함수에서 가변인자 사용하기

ㅇ 함수에서 가변인자를 정의할 때는 고정 매개변수가 한 개 이상 있어야 한다. ㅇ 가변 매개변수는 ...을 붙여 매개변수의 개수가 정해지지 않았다는 표시를 해준다. (단, ...뒤에 다른 매개변수 지정 불가) 반환값자료형 함수이름(자료형 고정매개변수, ...) { } #include #include // va_list, va_start, va_arg, va_end가 정의된 헤더 파일 void printNumbers(int args, ...) // 가변 인자의 개수를 받음, ...로 가변 인자 설정 { va_list ap; // 가변 인자 목록 포인터 va_start(ap, args); // 가변 인자 목록 포인터 설정 for (int i = 0; i < args; i++) // 가변 인자 개수만큼 반복 ..

[C언어] 파일 입출력, 복사 등등..

ㅇC언어의 표준 입출력 : 모니터와 키보드로 표준 입출력을 수행 ㅇC언어의 파일 입출력 : 보조기억장치 파일에 데이터 입출력을 수행 *표준 / 파일 입출력 함수* 스트림 기능 키보드 / 모니터 선택(키보드/모니터, 파일) 문자 출력 int putchar(int c) int fputc(int c, FILE* stream) 문자 입력 int getchar(void) int fgetc(FILE* strea) 문자열 출력 int puts(const char* s) int fputs(const char* s, FILE* stream) 문자열 입력 char* gets(char* s) char* fgets(char* s, int n, FILE* stream) 형식지정 출력 int printf(const* format..

[C언어] 열거형 enum

ㅇ열거헝 enum enum 열거형이름 { 값1 = 초깃값, 값2, 값3 }; - 정의 : enum 열거형이름 변수이름; - example #include enum DayOfWeek { // 열거형 정의 Sunday = 0, // 초깃값 할당 Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int main() { enum DayOfWeek week; // 열거형 변수 선언 week = Tuesday; // 열거형 값 할당 printf("%d\n", week); // 2: Tuesday의 값 출력 return 0; } - 연속되지 않은 불규칙한 값을 사용하려면 모든 열거형 값에 정수를 할당하면 됨 - typedef를 이용하여 별칭을 지정할 수 잇음. -..

728x90