반응형 C, C++9 [C] ^M (carriage return) 아스키코드 보통 윈도우에서 리눅스 운영체제로 data가 전달되는 경우 ^M(carriage return) 문자가 함께 전달되는 경우가 있다. ^M을 포함하여 리눅스 운영체제에서 string 비교를 하게될 경우가 있는데 이 때의 아스키코드 값은 13 (CR) carriage return 이다. carriage return은 "\r"으로 아래와 같이 비교할 수 있다. char str_cmp[3] = "abc\r" //str은 abc^M if (!strcmp(str, str_cmp)) printf("same!\n"); 실행 결과 # same! 2023. 3. 6. [c/c++] 여러개의 포인터 변수 한번에 선언하기 c와 c++에서 여러개의 포인터 변수를 한번에 선언하는 경우 주의해야 할 사항이 있다. 예를 들어, 아래와 같이 포인터(*)를 char*와 같이 선언하고 두개의 변수를 한번에 선언해보자. char* str1 = NULL, str2 = NULL; #include int main(void) { char* str1 = NULL, str2 = NULL; printf("str1 : %d\n", sizeof(str1)); printf("str2 : %d\n", sizeof(str2)); return 0; } 결과는 아래와 같이 8과 1이 출력된다. 자료형의 크기를 출력하여 변수의 크기를 알아 볼수 있는데, str1은 8 byte로 포인터지만 str2는 char 자료형의 크기인 1 byte가 출력된 것을 볼 수 있다.. 2022. 9. 5. [c] function() function(void) 차이 function() vs function(void) 함수 파라미터로 아무것도 없는 경우와 void를 명시한 경우의 차이를 정리한다. function()과 같이 선언된 경우의 함수는 파라미터를 명시적으로 선언하지 않았기 때문에 가변인자(variable parameter) 처럼 호출이 가능하다. 아래와 같이 함수 인자로 a와 b 두개를 전달하여도 error 없이 함수가 수행된다. #include void function() { printf("function()\n"); } int main(void) { int a = 1, b = 2; function(a, b); return 0; } function() 반면 function(void)와 같이 선언된 경우의 함수는 함수 파라미터로 값을 넣은 경우 error가 .. 2022. 8. 31. [c++] raw string literal (원시 문자열 리터럴) c++11 부터 raw string literal (원시 문자열 리터럴) 을 지원한다. c언어에서는 지원하지 않는다. 사용법은 문자열 앞에 R 을 붙여 C++ raw string literal (원시 문자열 리터럴)로 변환할 수 있다. 문자열 내에 이스케이프 문자 (이스케이프 시퀀스를 따르는 문자)를 그대로 인식하게 한다. 이를 통해 가독성을 높일 수 있는 장점이 있다. 이스케이프 문자는 시퀀스 시작을 알리는 백슬래시(\)를 사용하며 예약된 이스케이프 문자는 다음과 같다. 이스케이프 문자 의미 \n 줄바꿈 \t 가로탭 \' 작은따옴표 \b 백스페이스 \" 큰따옴표 \r 캐리지 리턴 \0 null 문자 ... 문자열 내부에서 큰따옴표를 표현하기 위해서는 아래와 같이 표현하게 되는데, string str =.. 2022. 8. 24. [c/c++] exit 함수 main 함수에서 정상적인 경우의 프로그램 종료는 return 0 또는 return EXIT_SUCCESS로 할 수 있다. 반대로 비정상적인 경우의 프로그램 종료는 return -1 또는 return EXIT_FAILURE로 할 수 있다. 그러나 main 함수가 아닌 일반 함수에서 위와같은 return은 함수의 실행/종료만 수행된다. 일반 함수에서 프로그램 종료를 위해서 아래와 같이 exit() 함수를 통해 상황에 맞게 사용할 수 있다. exit(0): 정상적인 경우의 프로세스 종료 exit(1)의 경우 비정상적인 경우의 프로세스 종료 2022. 8. 10. [cmake] cmake 사용법 (조건문, 출력, STREQUAL, option, FATAL_ERROR) cmake 사용법을 정리한다. 기본적인 설치 및 사용법은 아래 글을 참고한다. https://hong00.tistory.com/4 [개발환경] cmake 사용 cmake 사용법을 정리한다. cmake 설치 명령어. sudo apt-get install cmake cmake 버전 확인. cmake --version Compile Option 추가는 아래와 같이 할 수 있다. add_definitions(-DINCLUDE_HONGTEST) cmake 작성... hong00.tistory.com 먼저 set을 이용하여 변수에 값을 저장하고 STREQUAL을 이용하여 문자열을 비교한다. STREQUAL을 통해 대소문자 구별이 되는지 확인해본다. if else문은 아래와 같이 사용한다. set(val "hong".. 2021. 12. 27. [c++] 순수 가상 함수 순수 가상 함수 (pure virtual function)는 아래와 같다. virtual void parent_test() = 0; 순수 가상 함수가 있는 클래스를 추상클래스(abstract class)라고 하며, 이를 상속받는 클래스는 해당 순수 가상 함수를 override 해줘야 한다. 함수 재정의를 하지 않는 경우 (override) 오류로 판단되기 때문에 필수로 해줘야한다. 가상함수의 경우에는 재정의 되지 않아도 오류로 판단하지 않는다. 순수 가상 함수로만 이루어진 추상클래스를 인터페이스라고 한다. class parent { public: virtual void parent_test() = 0; void print() { printf("parent\n"); } }; class interface {.. 2021. 10. 28. [cmake] cmake 사용법 cmake 사용법을 정리한다. cmake 설치 명령어. sudo apt-get install cmake cmake 버전 확인. cmake --version Compile Option 추가는 아래와 같이 할 수 있다. add_definitions(-DINCLUDE_HONGTEST) cmake 작성. (main.c 파일 compile, binary 파일 hongStudy) #cmake minimum version cmake_minimum_required(VERSION 3.5.1) #compiler set(CMAKE_C_COMPILER "gcc") #binary name set(BIN_NAME hongStudy) #compile option add_definitions(-DINCLUDE_HONGTEST) #s.. 2018. 5. 31. [C언어] 웹 정보 가져오기 웹 정보 가져오기 #include #include #include #include int main(void) { if( access("/tmp/hong.html", F_OK) == 0 ) system("rm -rf /tmp/hong.html"); system("wget -P /tmp -O /tmp/hong.html http://hong00.tistory.com"); FILE *fp = NULL; fp = fopen("/tmp/hong.html", "r"); if( fp != NULL ) { char temp[255] = ; char *pstr = NULL; while( !feof(fp) ) { pstr = fgets( temp, sizeof(temp), fp ); printf("%s\n", temp); .. 2018. 5. 14. 이전 1 다음 728x90 반응형