2016-11-24 3 views
-6

여기에 짧은 코드가 있지만 컴파일되지 않습니다. 어떤 생각이 잘못 됐나요?C++ strcpy 문자열 복사

char *str; 
strcpy(str, "Hello world"); 
cout << str[6] << ' ' << &str[6] << endl; 
+0

이 작업을 수행 할 때, * 곳 * 포인터가'str' 점합니까? –

+0

죄송합니다. int main() 함수 –

+0

또한 빌드 오류에 대한 질문을 올릴 때 편집되지 않은 전체 오류 상자를 질문 본문에 포함하십시오. 그리고 [최소, 완전하고 검증 가능한 예] (http://stackoverflow.com/help/mcve)를 만들어보십시오. 여기에서 오류가 발생한 곳 (예 : 설명 등)을 표시 할 수 있습니다. 마지막으로 [좋은 질문을하는 법을 읽어보십시오.] (http://stackoverflow.com/help/how-to-ask). –

답변

1

문자열에 메모리를 할당해야합니다. 메모리에 포인터를 할당하는 malloc을 사용해야합니다. 그 When to use malloc for char pointers

에 대한

더에보십시오 :

char *str = malloc(sizeof(char) * 1024); 
+1

그러면 컴파일 오류가 수정되지 않습니다. 또한 이것이 도움이 될 수있는 이유를 설명하면 도움이 될 것입니다. – juanchopanza

+0

'char str [16]'은 조금 더 나은 IMO가 될 것입니다. –

+0

가 나는 STR [16] 를 숯불 시도하고 그것은 여전히 ​​ 심각도 \t 코드 \t 설명 \t 프로젝트 \t 파일 \t 라인 \t 억제 상태 \t C4996 \t 'strcpy를' 오류와 동일한 오류를 제공합니다 :이 함수 나 변수가 안전하지 않을 수 있습니다. 대신에 strcpy_s를 사용해보십시오. 지원 중단을 사용하지 않으려면 _CRT_SECURE_NO_WARNINGS를 사용하십시오. 자세한 내용은 온라인 도움말을 참조하십시오. –