안녕하세요. 궁금증연구소 입니다.
오늘 포스팅 주제는 "[c언어] strcpy 와 포인터 활용시 주의할점" 입니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * removeSpace(char *ps);
main()
{
char str[] = "park mun kim choe lee ";
char *pa;
pa = removeSpace(str);
puts(pa);
delete[] pa;
}
char * removeSpace(char *ps){
char buff[50]={0};
char *pb = buff;
int sw =0;
while(*ps){
if (*ps != ' '){
*pb = *ps;
pb++;
sw = 1;
}
if (*ps == ' ' && sw == 1) {
*pb = ',';
pb++;
sw = 0;
}
ps++;
}
*(pb-1) = 0;
char *pa = new char[strlen(buff)+1];
strcpy(pa, pb);
return pa;
}
위 코드에서 sctrcpy의 두번째 인수에 pb를 쓰면 에러가 발생한다. pb가 while을 거치면서 증가된 상태여서 buff의 첫번째 값을 가리키고 있지 않기 때문이다. 따라서 pb대신 buff를 쓰거나, pb를 초기화 한뒤 사용해야 한다. buff를 쓰는게 더 간단한듯하다.
[리눅스] 500 Illegal port command Error 발생시 대처법(ftp) (0) | 2022.07.23 |
---|---|
[c언어] strcat 사용시 주의할점 (0) | 2022.07.19 |
[c언어] 동적할당 활용시 주의할점 (포인터보단 인덱스) (0) | 2022.07.18 |
[c언어] 포인터와 배열을 같이 쓸때 주의 (0) | 2022.07.18 |
리눅스 변수 사용 주의할점~! (0) | 2022.07.12 |