빌드까지는 되는데 실행이 안 됩니다.
이송이
윤성우 열혈강의 C++로 독학 중인데 책에 있는 예문이 실행이 안되서요
예문에는 strcpy로만 되어 있는데 visual studio 2012는 strcpy_s로 해야 한다고 해서 그 부분만 고쳤습니다.
포인터로 선언한 경우에는 sizeof를 사용할 수 없는건가요?
#include iostream
#include cstring
#include string.h
#include stdlib.h
using namespace std;
char * MakeStrAdr(int len){
char * str=new char[len];
//char *str=(char*)malloc(sizeof(char)*len);
return str;
}
int main(void){
char * str=MakeStrAdr(20);
strcpy_s(str,sizeof(str),I am so happy!);
coutstrendl;
//free(str);
delete []str;
return 0;
}
P.S. strcpy_s(str, strlen(str),I am so happy!);로 고치니까 실행 결과가 나타나긴 하는데 이것도 오류가 발생합니다.
strcpy_s(str, 20, 문자열); 이런식으로 하면 오류없이 실행되던데 strcpy_s는 최대길이를 상수로만 받을 수 있는 건가요?
-
적송
sizoef(str)로 반환되는 값을 확인해보세요.
그리고 strcpy_s(str, strlen(str),\I am so happy!\);의 경우 이 코드 실행되기 전에 strlen(str)의 반환값이 얼마인지 확인해보세요.