[코딩도장] Unit 71 1. 파일 포인터 활용하기 (fseek, ftell) 1. 파일 포인터 이동하기 (fseek) fseek 함수는 기준점에서 이동할 거리(크기)를 지정하여 파일 포인터를 이동시킨다 fseek(파일포인터, 이동할크기, 기준점) fseek(fp, 0, SEEK_END); // 파일 포인터를 파일의 끝으로 이동시킴 fseek 의 기준점은 SEEK_SET 파일의 처음부터 시작 SEEK_CUR 현재 위치부터 이동 시작 SEEK_END 파일의 끝부터 시작 SEEK_SET, SEEK_CUR, SEEK_END는 기준점을 기준으로 파일 포인터의 위치를 바꾼다 fseek(fp, 0, SEEK_SET); 이면 파일의 처음으로 간다 fssek(fp, 0, SEEK_END); 이면 파일의 끝으로 간다 ..
C언어
[코딩도장] Unit 70 1. 파일에 문자열 읽고 쓰기 (fprintf, fscanf) 1. 파일 포인터 사용하기 (fopen) C언어에서 파일을 사용하기 위해서는 fopen 함수로 파일을 열고 파일 포인터를 얻어야 한다 // ↓ 파일 포인터 FILE *fp = fopen("hello.txt", "w"); // hello.txt 파일을 쓰기 모드(w)로 열기. // ↑ ↖ 파일 모드 // 파일 포인터를 반환 // 파일 이름 또는 파일 경로 FILE 구조체는 stdio.h 헤더파일에 정의되어 있다 보통 FILE 과 * 를 합쳐서 파일 포인터라 부른다 파일 모드의 종류는 r 읽기 전용 - 파일을 읽기 전용으로 연다 (반드시 파일이 있어야 함) w 쓰기 전용 - 새 파일 생성 (파일이 있다면 내용을 덮어씀)..
[코딩도장] Unit 66 ~ 67 1. 함수 가변인자 1. 함수에서 가변인자 사용하기 함수의 들어가는 인수(argument)의 개수가 변하는 것을 가변 인자(variable argument)라고 한다 함수에서 가변 인자를 정의할 때는 고정 매개변수가 한 개 이상 있어야 한다 고정 매개변수 뒤에 ... 를 붙여 가변 인자를 정의할 수 있다 반환값자료형 함수이름(자료형 고정매개변수, ...) { } ... 으로 들어온 가변 인자를 사용하려면 헤더 파일을 사용해야 한다 stdarg.h 에 정의된 가변 인자 처리 매크로는 아래와 같다 va_list 가변인자 목록(가변 인자의 메모리 주소를 저장하는 포인터) va_start 가변 인자를 가져올 수 있도록 포인터를 설정 va_arg 가변 인자 포인터에서 특정 자료..
[코딩도장] Unit 63 ~ 65 1. 포인터 매개변수 1. 포인터 매개변수 사용하기 C언어에서 값을 여러개 반환하는 함수를 만들 때 포인터 매개변수를 사용한다 반환값자료형 함수이름(자료형 *매개변수1, 자료형 *매개변수2) { } ( ) 안에서 자료형 뒤에 * 를 붙여 매개변수를 포인터 형태로 만든다 void swapNumber(int *first, int *second) // 반환값 없음, int 포인터 매개변수 두 개 지정 { int temp; // 임시 보관 변수 // 역참조로 값을 가져오고, 값을 저장함 temp = *first; *first = *second; *second = temp; } 매개변수를 int *first, int *second 와 같이 포인터 형식으로 지정해준다 함수 안에서..
[코딩도장] Unit 60 ~ 62 1. 함수 1. 함수 정의하기 함수를 정의하는 방법은 반환값 자료형, 함수 이름, ( ) 순으로 적어준 뒤 { } 안에 원하는 코드를 작성하면 된다 함수는 main 함수 바깥에서 작성해야 한다 void hello() // 반환값이 없는 hello 함수 정의 { printf("Hello, world!\n"); // Hello, world! 출력 } 함수의 반환값 자료형 부분에 void 를 적어주면 함수의 반환값이 없다는 뜻이 된다 int main() { hello(); // hello 함수 호출 return 0; } main 함수 안에서 함수이름을 적어준 뒤 ( ) 를 붙이면 함수를 사용할 수 있다 이렇게 함수를 사용하는 방법을 함수를 호출(call) 한다 라고 부른다 ..
[코딩도장] Unit 58 ~ 59 1. 자료형 변환 1. 기본 자료형 변환하기 C언어는 자료형이 같거나 크기가 큰 쪽으로 저장하면 자료형이 자동으로 변환된다 ※ 자료형이 다르면서 크기가 작은 쪽으로 변환하면 컴파일 경고가 발생한다 자료형을 크기가 큰 쪽으로 자동 변환하는 것을 형 확장이라 한다 반대로 크기가 작은 쪽으로 변환되는 것을 형 축소라고 한다 형 축소가 발생할 때 컴파일 경고가 뜨지 않도록 만드는 것을 형 변환이라고 한다 자료형을 지정하여 변환하는 것을 명시적 형 변환이라 한다 자료형을 변환하려면 변수나 값 앞에 변환할 자료형을 ( ) 로 묶어주면 된다 (자료형) 변수 int num1 = 32; int num2 = 7; float num3; num3 = num1 / num2; // 컴파일 경고..
[코딩도장] Unit 57 1. 열거형 1. 열거형 사용하기 열거형은 정수형 상수에 이름을 붙여 코드를 이해하기 쉽게 해준다 enum 키워드를 사용하여 정의하고 enumeration 에서 따왔다 enum DayOfWeek { // 열거형 정의 Sunday = 0, // 초깃값 할당 Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; } (닫는 중괄호) 뒤에는 반드시 ; (세미콜론)을 붙여줘야 한다 열거형도 정의만 해서는 사용할 수 없다 enum DayOfWeek week; 열거형도 변수로 선언해서 사용한다 열거형의 값은 처음만 할당해주면 아래에 오는 값들은 1씩 증가하며 할당된다 아무것도 할당하지 않으면 0부터 시작한다 Sunday 에 0을 할당하면 M..
[코딩도장] Unit 54 ~ 55 1. 공용체 1. 공용체 사용하기 공용체와 구조체는 정의 방법이 같지만 멤버를 저장하는 방식에서 차이가 있다 구조체는 각 멤버들이 각각 공간을 차지한다 공용체는 가장큰 자료형의 공간을 공유하여 사용한다 union Box { // 공용체 정의 short candy; // 2바이트 float snack; // 4바이트 char doll[8]; // 8바이트 }; 공용체는 union 을 사용하여 선언한다 공용체도 정의만 해서는 사용할 수가 없기 때문에 변수로 선언해서 사용해야 한다 union Box b1; // 공용체 변수 선언 Box 공용체에서 가장 큰 자료형은 char doll[8] 로 8바이트이다 따라서 공용체의 크기는 8바이트가 된다 공용체는 가장 큰 자료형의 공간을..
[코딩도장] Unit 48 ~ 49 1. 구조체 1. 구조체 사용하기 구조체는 struct 키워드로 정의한다 구조체는 보통 main 함수 바깥에 선언한다 함수 안에 선언하게 되면 해당 함수 안에서만 구조체를 사용할 수 있다 struct Person { // 구조체 정의 char name[20]; // 구조체 멤버 1 int age; // 구조체 멤버 2 char address[100]; // 구조체 멤버 3 }; struct 키워드 뒤에 구조체 이름을 지정해주고 { } 안에 변수를 선언한다 구조체 안에 들어있는 변수는 멤버라고 한다 구조체를 정의할 때는 중괄호 끝에 반드시 ; 을 붙여준다 구조체를 사용하려면 구조체 변수를 선언해야 한다 struct Person p1; 일반 변수로 선언한 구조체의 멤버에 ..
[코딩도장] Unit 41 ~ 45 1. 문자열 길이 구하기 (strlen) 1. strlen size_t strlen(const *_str) strlen 함수는 문자열의 길이를 구하는 함수이다 헤더 파일에 선언되어 있다 char *s1 = "Hello"; // 포인터에 문자열 Hello의 주소 저장 char s2[10] = "Hello"; // 크기가 10인 char형 배열을 선언하고 문자열 할당 printf("%d\n", strlen(s1)); // 5: strlen 함수로 문자열의 길이를 구함 printf("%d\n", strlen(s2)); // 5: strlen 함수로 문자열의 길이를 구함 strlen 함수가 문자열의 길이를 구할 때는 NULL 부분은 포함하지 않는다 s2 와 같이 배열의 크기와..