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

C/C++ Q/A
[939] Re:string 출력이 제 생각과 다르네요.
오전&오후 [kkhhyy11] 1614 읽음    2002-08-02 11:43
음 우선 func()에서 잘못되었네요..
for루프를 돌리면서 return 하셨는데..
return은 한번만 되면 바로 함수를 빠져 나옵니다..
그러니까 func()에서 하신거처럼 return 값이 3개가 나오는게 아닙니다..
이럴때는 이중포인터를 리턴하면 되거든요..
받을때도 이중포인터로 받아서 처리하면 되겠지요..?
그리고 지역번수로 이중포인터를 선언하셔서 그 변수의 포인터를 리턴하셨는데
이것도 잘못되었습니다.
지역변수는 life time(변수 존속기간)이 함수가 끝나버리면 없어져 버립니다..
그러므로 당연히 문제가 생기겠지요..?
그러니까 main에서 변수를 선언하시던가 아니면 func에서 선언하시고
static 키워드를 사용하셔야 합니다..아니면 전역변수로 선언하시던가요..^^

간단하게 수정해보았습니다..

#include <stdio.h>
#include <conio.h>

char **func(void);

void main()
{
   char **ptr,i;
   ptr = func();
   for(i=0;i<=2;i++){
        printf("%s\n",ptr[i]);
   }

   getch();
}

char **func(void)
{
   int j=0;
   static char *x[3]={"First string","Second String","Third string"};
  
   return x;
}

오제호 님이 쓰신 글 :
: 아래 프로그램을 보면
: 함수에서 문자열을 초기화하고 함수의 포인터를 사용하여 메인에서 func에 있는 세개의 스트링을 출력하는 것데요
: 제 의도는 "First string","Second String","Third string"을 출력하고 싶은데
: 실행결과는 first string만 세번 출력됩니다.
: 어떻게 해야 제가 원하는 결과를 출력해야 되나요?
:
: 고수님 답변 부탁드려요
:
: #include <stdio.h>
: #include <conio.h>
:
: char *func(void);
:
: main()
: {
:    int *ptr,i;
:    ptr=func();
:    for(i=0;i<=2;i++)
:       printf("%s\n",ptr);
:
:    getch();
: }
:
: char *func(void)
: {
:    int j=0;
:    char *x[3]={"First string","Second String","Third string"};
:    for(j=0;j<=2;j++)
:     return(x[j]);
: }

+ -

관련 글 리스트
938 string 출력이 제 생각과 다르네요. 오제호 1638 2002/08/02
939     Re:string 출력이 제 생각과 다르네요. 오전&오후 1614 2002/08/02
941         친절한 답변에 감사드립니다. 오제호 1434 2002/08/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.