-
[C언어-문자열관련] 본문
#1
1차원 배열을 파라미터로 보낼 때는 기본적으로 call-by-reference가 되는 것 같다.
void Toknize(char str[]) <-> Toknize(str);
이렇게 main에서 호출하고 함수에서 str의 내용을 변경하면 함수에서 돌아왔을 때 str의 내용 또한 변경되어 있다.
따라서 문자열 배열을 함수에서 처리하고 그 수정된 값을 반영하려면
void Toknize(char *str[]) <-> Toknize(&str); 이러한 실수는 하지말자!
#2
char 와 int간에 변환하는데 있어서 실수하는 부분
case 1: 문자열로 "123+" 를 받았는데 123만을 다른 문자열에 저장하고 싶다
char tmp = str[i] // 1이 들어간다.
char tmp = str[i] - '0' // 틀렸다. '0'을 빼주는 것은 int에서 char로 들어갈 때이다. 지금 str[i]는 char이기 때문에 여기서 더 빼면 틀리게된다.
tmp 문자열 하나로 사칙연산으로 하는 삽질은 피하자.
적당히 char tmp[size] 로 받아서 atoi나 다른 방법을 사용하는 것이 좋은듯 하다.
case 2: char * str <--> char tmp[size], 문자열 포인터를 문자열 배열에 넣는 방법.
1. 문자열 포인터 <- 문자열 배열 : 단순 대입(=) 가능
2. 문자열 포인터 -> 문자열 배열 : 단순 대입 당연히 불가능(루프 돌리자)
3. strcpy 사용할 때, 문자열 포인터가 param1 일 때는 반드시 메모리 할당했는지 체크!(그냥 하면 안된다) 문자열 배열은 걍 받을 수 있다. 대신 오버플로우조심.
'알고리즘 Note' 카테고리의 다른 글
[Sort]Insertion Sort (1) | 2020.03.02 |
---|---|
[Sort] Selection Sort (1) | 2020.03.02 |
[Sort] Bubble Sort (0) | 2020.03.02 |
[Sort] Stable / Unstable 정렬 (0) | 2020.03.02 |
C/C++ 배열 사이즈 관련 (0) | 2018.01.10 |