일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Programming
- 문법
- 백준
- Javascript
- 알고리즘
- Direct2D
- c
- Tips강좌
- 연산자
- VS ERROR
- c++
- doit코틀린프로그래밍
- 지식나눔강좌
- 이지스퍼블리싱
- Win32
- 리뷰
- CS
- 함수
- 김성엽
- Kotlin
- Visual Studio
- 티스토리
- 포인터
- 프로그래밍
- Tips프로그래밍강좌
- c#
- Desktop
- tipssoft
- Windows
- 배열
- Yesterday
- Today
- Total
목록문자열 (5)
F.R.I.D.A.Y.
C#에서 사용하는 두 가지 방식의 문자열 처리 string 컴파일 진행시 string 자료형을 .net 자료형인 System.String 타입으로 전환해 컴파일을 진행한다. 때문에 string으로 작성하더라도 System.String에 선언된 모든 내부 프로퍼티 및 메서드를 사용할 수 있다. 관리 방식 string 자료형은 객체를 변수가 가리키는 방식으로 문자열을 처리하고, 새로운 문자열을 대입했을 때는 객체를 수정하지 않고 새로운 객체를 만들어 해당 객체를 변수가 가리키는 방식으로 처리한다. 즉, C/C++에서의 const char* 타입의 문자열 상수를 가리키는 방식이라 보면 될 것 같다. 개별 문자 접근 이렇게 작성된 문자열은 문자의 집합체로서, 문자열의 개별 문자에 접근할 때는 배열 연산자로 사용..
VS ERROR C4996 : SDL 오류 오늘은 scanf() 함수와 같이 입출력 함수, 문자열 함수를 다룰 때 종종 발생하는 C4996에 대해 다뤄봅니다. 원인 원래는 문제없이 컴파일되는 것이 맞지만, scanf() 등의 함수에서 발생 가능한 잠재적 문제점으로.. pang2h.tistory.com 위 C4996 경고가 발생했던 이유에 대해 알아보는 시간을 가져봅니다. 함수의 구조 함수의 구조부터 확인합니다. 일단, 간단히 strlen() 함수를 가지고 예시를 들어보도록 합니다. 아래는 예시를 위해 직접 작성한 strlen()과 동일 기능을 하는 함수입니다. int strlen(char* str){ int count = 0; while(1){ if (*str != 0) count++; else brea..
이번 포스트에선 C에서 문자열을 어떻게 관리하고 저장하는지 알아봅니다. 하나의 변수, 하나의 값 프로그래밍을 하는 데 있어 중요한 것 중 하나가 변수입니다. 연산의 결과를 저장하기도, 또 저장된 값을 불러오기도 하는데 이용합니다. 이 변수의 특성 중에 중요한 한 가지가 있습니다. 바로 하나의 값만을 저장할 수 있다는 점입니다. 따라서 하나의 변수가 동시에 두 가지 값을 저장할 수는 없습니다. 저장할 땐 그렇다 치더라도 값을 빼내 올 때 무엇을 빼야 할지 결정지을 수 없기 때문입니다. 그렇지만 우리는 문자열을 변수에 저장해서 사용합니다. 어떻게 이런 일이 가능할까요? 생각의 전환 이런 문제를 C언어에서는 전체 문자열을 저장하지 않고 맨 처음 한 글자가 저장된 주소를 저장하는 것으로 해결했습니다. 이미지로 ..
매번 scanf_s를 사용하면서도 제대로 된 사용법을 몰라서 질문을 하는 분들이 많습니다. 그래서 이번 포스트에서는 scanf_s의 사용 방법에 대해 설명합니다. scanf_s C언어에서 입력을 받는 표준 입력입니다. 과거에도 C언어 표준으로 존재하기는 했으나 선택 구현이라 scanf_s를 구현한 컴파일러는 MSVC밖에 없었다고 하더군요. 그래서 많은 사람들이 scanf_s는 MSVC에서만 제공하는 "C언어 비표준이다!"라고 단정 짓는 경우가 있었습니다. 저도 최근까지는 scanf_s가 비표준인 줄 알고 있었어요... scanf_s의 함수 원형은 다음과 같습니다. int scanf_s(const char *format [, argument]...); 이때 [, argument]... 는 추가로 입력을 받..
char str1[] = "abcdefg"; char *str2 = "abcdefg"; 가끔씩, 배열과 포인터를 혼동하는 사람들이 있어서. 배열 str1은 문자열 "abcdefg"에서 각각의 문자를 수정할 수 있다. 그러나 포인터 str2 는 각각의 문자를 수정할 수 없다. 사실, 굉장히 간단한건데 기본적인 프로그램의 구조를 몰라서 생기는 문제라고 생각한다. 배열에서도, 포인터에서도 쌍따옴표로 묶은 문자열로 값을 초기화 할 수 있다. 그런데, 배열은 정확히 하면 초기화를 편하게 할 수 있도록 추가 문법을 제공한 것으로 볼 수 있다. 따라서 char str1[] = { 'a','b','c','d','e','f','g','\0' }; 일일이 대입이 되기 때문에 변경이 가능하다. 그러나 포인터에 값을 대입하는..