목록ProgrammingLanguage (52)
without haste but without rest
Reference - C언어 코딩도장 1. 서식 지정해서 문자열 쓰기 - fprintf #define _CRT_SECURE_NO_WARNINGS #include int main() { FILE* fp = fopen("hello.txt", "w"); fprintf(fp, "%s %d\n", "Hello", 123); fclose(fp); return 0; } * r, w, a 옵션 등은 다른 언어들과 같다. * 파일을 포인터로 얻어서 fprintf에 값으로 전달한다. 2. 서식 지정해서 문자열 읽기 - fscanf #define _CRT_SECURE_NO_WARNINGS #include int main() { char s1[10]; int num1; FILE* fp = fopen("hello.txt", "..
Reference - C언어 코딩도장 1. 매크로 C언어는 컴파일러에서 전처리기(preprocessor)를 제공한다. 보통 전처리기는 반복되는 작업을 미리 정의할 때 사용한다. 매크로는 전처리기에서 #define 으로 정의할 수 있다. 2. 매크로 정의하기 아래 코드에서 #define 지시자는 ARRAY_SIZE 에 정수 10을 할당했다. 이 코드의 장점은 배열의 크기를 수정할 경우, 지시자 코드 한줄을 수정하는 것 만으로도 바꾸고자 하는 배열의 크기를 한번에 처리할 수 있다는 것이다. 이런 문제를 해결하기 위해서 매크로를 사용한다. #include #define ARRAY_SIZE 10 int main() { char s1[ARRAY_SIZE]; for (int i = 0; i < ARRAY_SIZE;..
Reference - C언어 코딩도장 1. 열거형 열거형은 enum 키워드를 사용한다. enumeration에서 따온 키워드다. 아래 코드에서 Sun에만 값을 할당했는데, 열거형에서는 처음 변수에만 값을 할당해주면 다음 값부터는 1씩 증가한다. 만약 아무것도 할당하지 않으면 0부터 시작해서 증가한다. 따라서 아래 코드에서 Sunday에 아무 값도 할당을 안 해주더라도 Tuesday가 리턴하는 값은 같다. #include enum DayOfWeek { Sun = 0, Mon, Tue, Wen, Thu, Fri, Sat }; int main() { enum DayOfWeek week; week = Tue; printf("%d\n", week); return 0; } * 자바를 먼저 배워서 생각하는 개념이 맞..
Reference - C언어 코딩도장 0. 공용체 주로 임베디드 시스템, 커널 모드 디바이스 드라이버 등에 사용한다. 1. 구조체와 공용체 구조체는 멤버들이 각각 공간을 차지한다. 반면에 공용체는 멤버 중에서 가장 큰 자료형의 공간을 공유한다. 구조체의 크기는 모든 멤버들의 크기를 합산한 값인데, 공용체는 멤버 중에서 가장 큰 자료형의 공간을 리턴한다. 2. 공용체의 크기 아래 코드에서 sizeof(box)는 가장 큰 자료형인 char c[8]의 크기를 리턴한다. #define _CRT_SECURE_NO_WARNINGS #include #include union Box { short a; float b; char c[8]; }; int main() { union Box box; printf("%d\n",..
Reference - C언어 코딩도장 1. 구조체 기본 형태 C 언어는 클래스가 없다. 이 역할을 구조체가 하는 듯 하다. struct Person { char name[20]; int age; char address[100]; }; 2. 구조체 예제 1). 멤버를 직접 정의하기 #define _CRT_SECURE_NO_WARNINGS #include #include struct Person { char name[20]; // 구조체 멤버1 int age; // 구조체 멤버2 char address[100]; // 구조체 멤버3 };// 구조체 정의 뒤에 변수를 붙이면 선언까지 한번에 할 수 있다. int main() { struct Person p1; // 구조체 변수 선언 strcpy(p1.name,..
Reference - C언어 코딩도장 1. sprintf s1과 같이 문자열을 저장할 빈 배열을 버퍼라고 부른다. #define _CRT_SECURE_NO_WARNINGS #include int main() { char s1[20]; sprintf(s1, "Hello, %s", "World!");// sprintf(배열, 서식, 값1, 값2, ...) printf("%s\n", s1); return 0; } * "Hello, %s"라는 서식에 "World!"라는 문자열 값을 붙이고 s1 배열에 저장한 것이다. 2. 숫자를 문자열로 변환 sprintf 함수를 이용해서 숫자를 문자열로 변환할 수 있다. 문자열 배열에 숫자를 저장하고, 출력시 문자열의 포맷으로 출력한다. #define _CRT_SECURE_N..
Reference - C언어 코딩도장 1. strlen( ) - String length #include #include int main() { char* s1 = "Hello"; char s2[10] = "Hello"; printf("%d\n", strlen(s1)); printf("%d\n", strlen(s2)); return 0; } s1은 포인터 형태로 문자열을 저장했고, s2는 배열 형태로 문자열을 저장했다. 그런데 두 문자열의 길이를 출력하면 둘다 5가 출력된다. 배열로 저장한 경우 남은 배열이 모두 NULL값이 들어가지만 strlen 함수는 NULL값을 계산하지 않는다. 2. strcmp( ) - String Compare strcmp 함수는 문자열을 매개변수로 받아서 같은지 비교하는 함수..
Reference - C언어 코딩도장 1. 포인터 기본 #define _CRT_SECURE_NO_WARNINGS #include int main() { int* numPtr; int num1 = 10; int* numPtr2 = 20;// 바로 초기화해서 사용할 수도 있다. numPtr = &num1; *numPtr = 20; printf("%d\n", *numPtr); printf("%d\n", num1); return 0; } 포인터는 자료형에 *를 붙여서 선언한다. 포인터의 특징은 값부에 메모리 주소를 갖는다는 것이다. 위 코드에서 numPtr을 포인터로 선언했고 num1이라는 변수의 주소값을 저장했다. 즉 numPtr이라는 int형 포인터는 num1의 메모리 주소를 갖는다. (애초에 변수 할당하고..