일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- C언어 # 부록
- Hacking #Baic
- MySQL #핵심정리
- C언어 #부록
- shell_script
- C++ 언어 #핵심정리
- C언어 #핵심정리
- HTML #핵심정리
- C언어 # 핵심 정리
- Bandit
- C++ 언어 # 핵심정리
- C++ 언어 # 핵심 정리
- PHP #핵심정리
- Today
- Total
목록C Language Basic (48)
cCcode

#include #include int log_i_one_1 = 0; char log_c_one = '?'; int log_i_one_2 = 0; int log_i_two_1 = 0; char log_c_two = '?'; int log_i_two_2 = 0; int log_i_three_1 = 0; char log_c_three = '?'; int log_i_three_2 = 0; int log_i_four_1 = 0; char log_c_four = '?'; int log_i_four_2 = 0; int record_count = 0; char circle_one = 127; char circle_two = 6; char* blank_one = " "; char* blank_two = " "; cha..

1. 구조체와 메모리 활용 구조체도 결국 메모리 공간을 차지하게 되므로 메모리 관련 함수 또한 사용가능합니다. 저희가 변수를 초기화하려면 =(할당 연산자)로 0이라는 값을 할당해주면 끝나는 간단한 문제였습니다. 하지만 구조체의 멤버들을 0으로 초기화 하려면 다음과 같이 .을 사용해 각 멤버에 접근한 후 0을 저장해야 합니다. 꽤나 번거롭습니다. 다른 방법으로는 구조체 변수를 선언할 때 { 0, }처럼 중괄호를 사용하여 구조체 변수의 모든 내용을 0으로 초기화할 수 있지만, 변수에서만 사용할 수 있고 malloc 함수로 메모리를 할당한 변수에는 사용할 수 없다는 단점이 없습니다. 일일이 멤버에 값을 설정하거나 중괄호(선언과 동시에 할당할 경우에만 사용가능)를 사용하지 않고, memset 함수를 통해 구조체..

1. 구조체 정렬 크기 조절 데이터 전송이나 저장을 할 때 구조체 정렬을 피하기 위해 각 컴파일러에서 제공하는 특별한 지시자를 사용해서 구조체 정렬 크기를 조절해줘야 합니다. 왜냐하면 C언어에서는 따로 구조체를 정렬하는 표준 방법이 없거든요. 결과를 보시면 1byte 크기로 정렬했기 때문에 1(flags) + 4(seq) = 5(packet)이 나왔습니다. 즉, 남는 공간이 없기에 구조체 멤버 크기의 합이 구조체의 크기와 같아지는 것입니다. 제가 #pragma pack(pop)을 통해 정렬 크기를 원상태로 돌린 이유는 이렇게 하지 않는 다면 packet 이후에 오는 구조체들 역시 1byte 정렬되기 때문입니다. 만약 GCC 버전이 4.0 미만이라면 #pragma 대신 __attribute__ 를 사용합니..

1. 구조체 포인터 사용하기 보통 구조체 멤버로 변수가 여러 개 들어있기 때문에 크기가 큰 편이에요. 그렇기에 일일이 구조체 변수를 선언해서 사용하는 건 비효율적이죠. 그래서 우린 포인터에 메모리를 할당해 사용할거에요. 다른 자료형들은 그 자체로 포인터를 선언할 수 있었죠? 마찬가지로 구조체 또한 포인터로 선언할 수 있습니다. 그리고 구조체 포인터는 malloc 함수를 사용해 동적메모리를 할당할 수 있어요. 일단 struct hobby * h1처럼 struct 키워드에 구조체 명을 사용해 구조체 포인터를 선언합니다. 그리고 malloc 함수로 메모리를 해당 구조체 크기만큼 메모리를 할당합니다. 여기서 구조체 멤버에 접근하기 위해선 일반적으로 사용하던 . 이 아닌 ->(화살표 연산자)를 사용해 구조체 포인..

#include #include #include typedef struct { char name[30]; int average_score; char rank; }Data_Base; void PRINT_TITLE(); int main() { Data_Base d1; int input_one; int input_two; char input_three[30]; char input_three_char; int input_three_num = 0; strcpy_s(d1.name, 7, "cCcode"); d1.average_score = 50; d1.rank = 'B'; outset: PRINT_TITLE(); printf("Helper : If you want continue, press ENTER.\n"); ..

1. 구조체 사용하기 - 2 구조체 변수를 선언할 때는 일일이 struct 키워드를 사용하려니 조금 귀찮았죠? 물론 구조체를 정의와 동시에 선언하는 방법을 통해 간단히 할 수 있었지만, 다른 방법 또한 존재합니다. 그건 바로 typedef로 구조체를 정의하며 별칭을 지정하는 방법입니다. typedef로 구조체 별칭을 만들었다면 변수는 ○ 구조체 별칭 변수명; 형태로 선언합니다. typedef 를 사용하고 구조체를 정의할 때 본래 구조체 변수를 선언하던 중괄호와 세미콜론 사이에는 별칭이 들어가기 때문에 위 코드에선 구조체 별칭을 Position이라 하겠다는 의미입니다. 구조체 별칭을 정했기 때문에 이제 저희는 struct 키워드를 생략하고 바로 변수를 선언할 수 있는겁니다. 물론 typedef 를 사용해 ..

1. 회문 판별과 N-gram 지금까지 배운 문자열을 이용해 회문 판별과, N-gram을 만들어보겠습니다. 회문은 유전자 염기서열 분석에, N-gram은 빅데이터 분석, 검색엔진등에 자주 사용됩니다. 1) 회문 판단 프로그램 #include #include #include int main() { printf("-- Input Checking Program --\n\n"); char word[30] = {'\0',}; int word_length = 0; bool is_analyze = true; printf("INPUT : "); scanf_s("%s", &word, (unsigned char)sizeof(word)); word_length = (int)strlen(word); for (int i = 0..

1. 문자열 자르기 특정 문자를 기준으로 문자열을 자르고 싶다면 strtok 함수를 사용합니다. 함수명은 문자열은 조각(token)으로 나누다(string tokenize)에서 가져왔습니다. (파일에 선언되어 있습니다.) 음.. strchr 함수와는 좀 다르죠? 함수 흐름을 간단히 설명드리자면 다음과 같습니다. 우선 첫 번째 strtok 함수는 문장에서 구분자로 들어온 " " 즉, 공백을 찾습니다. 공백에 해당하는 부분을 찾게 되면 해당 부분을 문자열의 끝을 의미하는 널문자로 바꿔줍니다. 따라서 strtok의 첫 번째 반환 값은 'C'가 됩니다. 이 상태에서 다시 strtok(NULL, " ") 형태로 함수를 호출하면 NULL부터 시작하여 또 다른 구분자를 찾게 됩니다.따라서 이 경우에는 "Languag..