일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문자열파싱
- background service
- 코틀린
- 연결리스트
- Linked List
- ws2_32.lib
- Mat 변수
- 딕셔너리
- 문자열다루기
- socket
- flutter
- 문자열 다루기
- Android
- 파일입출력
- 진수변환기
- 메모리반환
- 콘솔 키보드 이벤트
- InfluxDB
- dart
- foreground service
- 자료구조
- Kotlin
- FTP
- vscode
- InfluxDBClient
- 소켓프로그래밍
- dictionary
- UI
- C
- vs code
- Today
- Total
목록전체 글 (33)
무슨 일로 C 하셨습니까?

솔직히 문자열 다루는 항목에선 가장 고급기술이 아닐까 싶다. 물론 이 기능을 하는 함수도 에 존재하지만 직접 구현해 볼것이다. 간단히 구상해보면 기본 문자열(Source)에서 특정 구분자[문자열/문자](separator)를 기준으로 나누어서 각 문자열들을 배열의 형태로 반환시키도록 할 것이다. 함수 기능 문자열을 특정 문자열(문자)을 기준으로 나눔 입력값 source(문자열), separator(문자열) 반환값 문자열(Token) 배열 나누어진 여러 문자열들 char** g(char* Src, char* Sep) { return NULL; } ( Src : Source / Sep : Separator -> 구분자 ) 함수를 선언해준다. 이전에 만든 함수를 통해 Source에서 Separator가 얼마나 ..

문자열 검색 기능은 실제론 많이 사용해 본적이 없다. 그러나 다음에 구현해 볼 문자열 토큰함수를 위해 미리 구현해야 한다. 구현에 앞서 잠깐 설계를 해보자면 source가 될 문자열과 해당 문자열에서 찾을 문자 혹은 문자열 target, 을 입력하고 반환값으로 source에 target이 얼마나 포함되어있는지와 포함되어있는 인덱스들을 함께 정수형 배열로 반환할 것이다. 함수 기능 문자열에서 특정 문자열의 위치를 찾아내는 함수 입력값 source(문자열), target(문자열) 반환값 정수형 배열 일치하는 위치 수, 각 위치들 함수를 선언해준다 int* f(char* Src, char* Target) { return NULL; } 반환할 정수형 배열의 크기는 1 + n인데 ( n: 문자열이 일치된 위치들,..

string.h 헤더파일을 참조하여 strcmp() 함수를 사용하여 쉽게 문자열을 비교할 수 있다. 그러나 난 굳이 두 문자열을 비교하는 함수를 만들 것이다. 이름 없는 함수부터 만들고 시작하자 #define SAME 0 #define NOT_SAME 1 int f(char* StringA, char* StringB) { return NOT_SAME; } 이번엔 뭔가 느낌있어보이게 상수도 사용해보도록 하자 문자열 비교는 어려울 것이 없다. 문자열 즉 문자 배열에서 각 문자가 일치하는지 확인하면 된다. #define SAME 0 #define NOT_SAME 1 int f(char* StringA, char* StringB) { int LengthA = StringLength(StringA); int Le..
C에도 기본적으로 제공되는 함수들이 매우 많아서 몇개의 헤더파일만 포함시켜도 다양한 함수를 사용할 수 있다. 그런데 난 굳이 직접 만들어서 사용할 것이다. 최소한의 헤더만을 사용해서 이번엔 그 대상을 문자열로 하겠다. 실제로 많은 데이터를 문자열로 다루는데 문자열 함수가 생각보다 많이 불친절하다고 느꼈기 때문에 직접 만들어 쓰겠다. 그 시작은 문자열 합성함수이다. 시작은 이름없는 함수 선언부터 시작한다. char* f(char* HeadString, char* TailString) { return NULL; } 두 문자열을 합해서 반환하는 함수를 구현하겠다. 순서는 당연히 head-tail순이다. int HeadLen = StringLength(HeadString); int TailLen = String..

NumberConverter 헤더에 붙여서 쓰려는 순간 알 수 없는 에러가 발생했다. 프로젝트 재빌드 .... (X) 함수 안쓰고 실행 .... (X) 소스파일을 .cpp → .c 파일로 변경 .... (O) * 원래 LNK2001 , LNK1120 에러의 경우 static 변수가 어쩌고 저쩌고 해서 에러가 나서 전역변수 나 정적변수를 어떻게 잘 해결하면 된다고 한다.

역시 문체는 그냥 편한대로 하는것이 좋은것 같다 무슨 음슴체는 말도 안되는 소리였던걸로... 10진수를 n진수로, n진수를 10진수로 바꾸는 함수를 구현했다. 하지만 본디 목적은 무엇이겠는가 바로 n진수를 m진수로 바꾸는게 아니겠는가 구현은 간단할 것이다 N진수 → 10진수 → M진수 로 변환시켜주면 간단할 것이다. 앞서 구현한 두 함수를 이용하면 될 것 같다 시작은 마찬가지로 이름없는 함수에서 시작 char* g(char* Number, int FromBit, int ToBit) {} 각 인자는 숫자와 해당 숫자가 몇 진수인지 그리고 몇진수로 변환할지 넘겨주면 되겠다. char* g(char* Number, int FromBit, int ToBit) { int temp = NumberConverter_..
이전 게시물에 이어서 작성하는 게시물. 블로그에 글을 게시할 때 어떤 문체가 좋을지 고민하는 중에 나에게 블로그를 추천해준 사람이 음/슴체가 어울릴것 같다하니 이제부터 음슴체로 게시하겠음 진수 변환기 1.0에 큰 문제가 발견됨 바로 10진수 이상의 진수에서는 정상적으로 작동하지 않음 16진수 표기법에 따라서 10진수 10부터 15까지 각 수는 알파벳 a부터 f 로 표현하는 것이 국룰임 그런데 1.0에서는 알파벳으로의 변환을 고려하지 않음 따라서 수정이 필요함 while (1) { if (Temp_Number == 0) break; int remainder = Temp_Number % ToBit; if (remainder > 9) result[--MSB] = remainder + 'a' - 10; else..
프로젝트를 진행하다가 진수변환기가 필요한 일이 생겼다. 진수변환하는 코드야 널리고 널렸겠지만, 직접 만들어 보기에 아주 적절한 난이도 인것 같아서 직접 만들어보기로 한다. 진수변환의 개념은 익숙하다. 그런데 코드로 구현하기가 막막하다. 개념부터 다시 생각해보도록 하자 10진수 255를 2진수로 바꿔보면 255 -> 11111111 로 나타낼 수 있는데 255는 1 + 2 + 4 + 8 + 16 + 32 + 64 +128 로 쪼갤 수 있고 2진수 11111111의 각 각 1은 제일 낮은 비트(제일 오른쪽) 부터 1, 2, 4, 8, 16, 32, 64, 128 을 의미한다. 즉, 128*1 + 64*1+ 32*1 + 16*1 + 8*1 + 4*1 + 2*1 + 1*1 = 255 이다. 10진수 250을 2..