-

[C-문자열] java나 c++에서 string 사용하는것 처럼 사용하기 본문

CS Language Note

[C-문자열] java나 c++에서 string 사용하는것 처럼 사용하기

Boogallee 2018. 1. 8. 16:26

Java 나 C++ 에서는 String 으로 선언한 str을 str += "A" 와 같은 연산이 가능하다.


하지만 C에서는 불가능!


char *str;

scanf("%s",str)  


이 자체가 불가능하다. 왜냐하면 str은 read only 영역이라 동적 메모리 할당을 해주어야 한다.


char* str = malloc(sizeof(char)*N); 

scnaf("%s",str) 이어야 한다.



그렇다면 내가 하고싶고 볼때마다 실수하는 부분은(삽질시간 증가하는)


1. str+="A" 와 같은 연산


2. char 1개와 str 과의 연산


3. 1개의 Char를 스트링으로 어떻게 변환해서 다른 스트링과 붙이고 지지고 복고 할 것 인가?


ex)


char strArr[10]; //초기화 되어있다 치고


strcat(str,strArr[i]);  


당연히 warining이 발생한다. warning C4024: 'strcat' : different types for formal and actual parameter 2


strcat 함수 두번째 파라미터는 const char* 이기 때문이다.


무시하고 돌리는순간 0xC0000005: Access violation writing location 0x0131685C. 발생.



-----------------------------------------------------------------------------------------------------------------------------------



우선 char * str을 사용한다는 것 자체는! 스트링 상수를 사용한다는 개념과 같다.


따라서 스트링 배열을 수정할 필요가 있다면 char 배열을 사용해서 하는 것이 바람직 하다.




Comments