C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38633] Re:Re:Re:[질문] malloc함수와 문자열.
진수.네모 [miman101] 1273 읽음    2005-01-04 17:45
#include <string.h> 를 추가 하고 해보세요.

추천 사이트 www.winapi.co.kr 을 가서 보세요
c/c++ 레퍼런스 부분에 함수 원형과 예제가 나와있답니다.

춤추는대수사선 님이 쓰신 글 :
: 답변 감사합니다.
:
: 문자열 복사하는 함수가 strcpy 였군요.
: strcpy를 사용하지 않고 문자열을 복사할수는 없을까요?
: 수동으로 말이죠.
: 아직 배우지 않은함수라서요.
:
: 방금 strcpy 써봤는데 'Undefime Symbol' 이라는군요.
: .......ㅠㅠ
:
:
:
: 진수.네모 님이 쓰신 글 :
: : 잘못 사용하고 있는듯 합니다.
: : 1     char chtemp[]="Let me say those words as hently as I can";
: : 2     chtemp = (char *)malloc(50);  //이부분//
: : 3     printf("%s \n",*chtemp);
: : 4     free(chtemp);
: :
: : 1번에서 이미 문자열에 맞는 메모리를 컴파일러가 임의로 할당하고 이 주소를 chtemp 에 넘겨주고 있습니다.
: : 2번에서 chtemp 에 새로이 메모리를 할당하고 이 주소를 넘겨주려고 했는데 이는 잘못된 경우 입니다.
: :      배열의 이름은 주소를 나타내는 것은 맞으나 이는 const 입니다. 절대 변경 불가합니다.
: :      따라서 2번 구문은 잘못됬습니다. 
: :      또 1번에서 말했듯이 chtemp 에 맞는 메모리가 있으므로 다시 할당할 필요가 없습니다.
: :
: : 3번 문자열을 화면에 뿌려 주기 위해서는 주소를 넘겨 주어야 합니다. *chtemp 가 아니라 chtemp를 넘겨주어야 합니다.
: :
: : 가령 문자열을 복사하고자 한다면
: :                 char *szCopy;
: :      char chtemp[]="Let me say those words as hently as I can";
: :                 szCopy = (char *)malloc(sizeof(char) * 50);  //이부분//
: :      strcpy(szCopy,chtemp);
: :                 printf("%s \n",szCopy);
: :      free(szCopy);
: : 처럼 해야 합니다.
: :
: : char *temp;
: : temp = "이렇게 사용하면 안됩니다.";
: :
: : char *temp;
: : temp = (char *)malloc (sizeof(char) * 50);
: : strcpy(temp, "이렇게 사용해야 합니다");
: : free(temp);
: :
: :
: :
: : 춤추는대수사선 님이 쓰신 글 :
: : : 문제는
: : : char chtemp[]="Let me say those words as hently as I can"; 의 문자열을
: : : 동적 메모리에 보관하고 이를 출력하는 프로그램을 작성하여 보세요.
: : :
: : : ---------------제가 풀어볼려고했던 답--------------------
: : : #include <stdio.h>
: : : #include <stdlib.h>
: : :
: : : void main() {
: : :
: : :     char chtemp[]="Let me say those words as hently as I can";
: : :     chtemp = (char *)malloc(50);  //이부분//
: : :     printf("%s \n",*chtemp);
: : :     free(chtemp);
: : :     }
: : : -------------------------------------------------------------
: : :
: : : //이부분// 에서 에러가 나더군요!
: : : 에러메세지는(터보C++3.1 for Windows) Lvalue required 이고,
: : : 비주얼C++은
: : : error C2440: '=' : cannot convert from 'char *' to 'char [42]'
: : : There are no conversions to array types, although there are conversions to references or pointers to arrays
: : : Error executing cl.exe.
: : : 이렇게 나오네요
: : :
: : : 뭐가 문제일까요.......ㅡㅡa
: : :
: : : 김민식님 감사합니다.

+ -

관련 글 리스트
38627 [질문] malloc함수와 문자열. 춤추는대수사선 948 2005/01/04
38629     Re:[질문] malloc함수와 문자열. 진수.네모 1035 2005/01/04
38632         Re:Re:[질문] malloc함수와 문자열. 춤추는대수사선 1056 2005/01/04
38633             Re:Re:Re:[질문] malloc함수와 문자열. 진수.네모 1273 2005/01/04
38628     Re:[질문] malloc함수와 문자열. 김민식 1022 2005/01/04
38631         Re:Re:[질문] malloc함수와 문자열. 춤추는대수사선 779 2005/01/04
38634             Re:Re:Re:[질문] malloc함수와 문자열. 라스코니 936 2005/01/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.