본문 바로가기

C_study

(24)
[C] 코딩도장 60 : 함수 사용하기 60.7 심사문제 : 함수 정의하기 #include void printIPAddress() { printf("192.168.10.5\n"); // 함수를 호출하면 다음과 같이 출력한다 } void printHostname() { printf("Jupiter"); } int main() { printIPAddress(); printHostname(); return 0; } 60.8 심사문제 : 함수 선언하기 #include void printName(); // main 함수 아래에 함수가 정의되어 있으므로 미리 선언해주지 않으면 컴파일 오류 발생 void printOrdinal(); int main() { printName(); printOrdinal(); return 0; } void printName(..
[C] 코딩도장 59 : 포인터 연산 사용하기 59.9 심사문제: 포인터 연산으로 메모리 주소 조작하기 #define _CRT_SECURE_NO_WARNINGS #include int main() { short *numPtrA; short *numPtrB; short *numPtrC; scanf("%p", &numPtrA); // F0000000 입력 numPtrB = numPtrA + 3; // 포인터가 short 자료형이므로 2바이트씩 3번 순방향으로 이동 numPtrC = numPtrA + 5; // 5번 순방향으로 이동 printf("%X\n", numPtrB); // F0000006 printf("%X\n", numPtrC); // F000000A return 0; } 59.10 심사문제: 포인터 연산과 역참조 사용하기 #define _CR..
[C] 코딩도장 58 : 자료형 변환하기 58.10 심사문제 : 소수점 이하 버리기 #define _CRT_SECURE_NO_WARNINGS #include int main() { float num1; int num2; scanf("%f", &num1); num2 = (int)num1; // num1은 실수형이므로 정수형으로 형변환하여 num2에 저장한다. printf("%d\n", num2); return 0; } 58.11 심사문제 : 포인터 변환하기 #define _CRT_SECURE_NO_WARNINGS #include #include int main() { unsigned long long *numPtr1 = malloc(sizeof(unsigned long long)); unsigned int *numPtr2; scanf("%llx"..
[C] 코딩도장 57 : 열거형 사용하기 57.8 #include enum PROTOCOL_TYPE { PROTOCOL_IP = 4, //열거형은 앞의 값을 할당하고 뒤의 값을 할당하지 않으면 1씩 커짐 PROTOCOL_UDP, PROTOCOL_TCP }; int main() { enum PROTOCOL_TYPE p1, p2, p3; p1 = PROTOCOL_TCP; p2 = PROTOCOL_UDP; p3 = PROTOCOL_IP; printf("%d %d %d\n", p1, p2, p3); // 6 5 4가 나와야함 return 0; } 57.9 #include enum MasterYiSkill { AlphaStrike = 1, Meditation, WujuStyle, Highlander }; int main() { enum MasterYiS..
[C] 코딩도장 56 : 구조체 비트 필드 사용하기 비트 필드를 사용하면 구조체 멤버를 비트 단위로 저장할 수 있다. #include struct cafe { unsigned int a : 1; // 자료형 멤버변수명 : 비트 크기 형태로 정의한다 unsigned int b : 3; unsigned int c : 7; }; int main() { struct cafe cafe1; cafe1.a = 1; // 0000 0001 , 1비트 크기로 저장되므로 1이 저장됨 cafe1.b = 15; // 0000 1111 , 3비트 크기로 저장되므로 111이 저장됨 cafe1.c = 255; // 1111 1111 , 7비트 크기로 저장되므로 111 1111이 저장됨 printf("%u\n", cafe1.a); // 1 printf("%u\n", cafe1.b);..
[C] 코딩도장 54-55 : 구조체와 공용체 사용하기 1. 구조체와 공용체의 차이점 구조체는 가장 큰 자료형의 배수 크기로 구조체 크기가 선언된다. 이 때 남는 공간은 패딩된다(?). 구조체의 멤버들이 각방을 쓴다면, 공용체의 멤버들은 한 방을 공유한다. 이 때 가장 큰 자료형의 공간을 공유한다. 그렇기 때문에 한 멤버에 값을 저장하면, 나머지 멤버의 값들은 사용할 수 없다. 하지만 한번에 하나씩 값을 저장하고, 사용하면 사용할 수 있다. #include union House { int age; char person1; char person2; }; int main() { union House house; house.age = 12; house.person1 = 'c'; printf("%d\n", house.age); printf("%c", house.pe..
[C] 프로그래머스 - 문자열을 정수로 바꾸기 프로그래머스 문제를 풀려고 보고 있는데 아예 이해가 안가는 문제들이 있어서 못 풀다가 처음 풀어봤다. 입력된 문자열을 반환하면 정수로 바꾸어 반환하면 되는 문제이다. #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. int solution(const char* s) { int answer = 0; answer = atoi(s); return answer; } 간단하게 s에 입력된 문자열을 atoi 함수를 사용해 answer에 넣어주면 되는 문제이다. ++ 프로그래머스 문제들을 못 풀고 있는 이유가 int main() 부분에 다른게 들어가는 경우를 모르고 아직 공부하지 못했기 때문이었는데, 내일 공부하면서 저..
[C] 코딩도장 46 : 문자열과 실수를 서로 변환하기 1. atoi, atof atoi 함수는 문자열을 정수로 바꿔주고, atof 함수는 실수로 바꿔준다. #include #include int main() { char* s1 = "12345"; char* s2 = "0.3245"; int num1; // 바뀐 수를 넣어줄 변수 선언 float num2; num1 = atoi(s1); // atoi 함수를 사용해 정수로 변환해준다. num2 = atof(s2); // atof 함수를 사용해 실수로 변환해준다. printf("%d\n%0.4f", num1, num2); return 0; } 2. strtol, strtof strtol 함수는 문자열을 10진수나 16진수로 변환해주고, strtof 함수는 문자열을 실수로 변환해준다. 지수표기법으로 표시된 수 또..