|
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);
: }
:
|