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

C/C++ Q/A
[2697] Re:이것도 조금만 알려주세요~
김진호.불사새 [phenix96] 1204 읽음    2003-05-26 15:25
p1에는 str1의 끝 부분이 들어있습니다.

while문에서는 p1의 값을 하나씩 줄여가면서 => p1--
그곳에 위치한 값을 읽어오고 => *p1--
p2값을 하나씩 증가하면서 넣습니다. => *p2++;

--,++연산자가 *보다 우선이기에 잘 동작합니다.

순서를 뒤섞으려면...변수 두개 만드셔서 하나는 str1시작, 하나는 str1끝을 지정하시고

두 변수를 돌아가면서 실행하면 될듯합니다.

char str2[80], *p1, *p2, *p3,a;
a=0;
p1 = str1 + strlen(str1) - 1;  /* p1가 str1 의 마지막 */
p3 = str1 ;  /* p3가 str1 의 시작 */
                       
p2 = str2;

while (p1>=p3)
{
  if(a%2)
  {
    *(p2++) = *(p1--);        /* *p2 = *p1; p1--; p2++; */
  }
  else
  {
    *(p2++) = *(p3++);        /* *p2 = *p3; p3++; p2++; */
  }
  a++;
}

미니 님이 쓰신 글 :
: 이 소스는 어떤 문장이 입력되면 거꾸로 나오는 예를들어 abcde를 입력하면 edcba가출력되는 소스인데요 while 아래 *p2++ = *p1--; ->이부분좀 설명해주시면 감사하겠고요 이부분을 바꿔서 양끝에서 차례대로..예를들어서 abcde를 입략하면 aebdc이렇게 나오도록하는건 어떻게 해야좋을까요?
:    
:          #include "stdio.h"
:     #include "string.h"
:
:     char str1[] = "Pointers are fun to use";
:     main()
:     {
:         char str2[80], *p1, *p2;
:
:         p1 = str1 + strlen(str1) - 1;  /* p가 str1 의 마지막
:                           문자를 가리키게 */
:         p2 = str2;
:
:         while (p1>=str1)
:             *p2++ = *p1--;        /* *p2 = *p1; p1--; p2++; */
:
:         *p2 = '\0';                   /* str2의 끝에 널 문자를 넣는다. */
:         printf("%s\n%s\n", str1, str2);
:     }
:

+ -

관련 글 리스트
2695 이것도 조금만 알려주세요~ 미니 1164 2003/05/26
2697     Re:이것도 조금만 알려주세요~ 김진호.불사새 1204 2003/05/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.