ページ 11

ポインタを用いて文字列を逆順に格納

Posted: 2009年3月01日(日) 01:27
by 馬鹿太郎
こんばんは、いつもお世話になっています。
さっそくですけど、このプログラムは文字型配列str1に"ABCDEFGHIJKLMN"という文字列が格納されています。
ポインタを二つ用いて、文字型配列str2に、この文字列を逆順に格納します。
#include <stdio.h>

int main(void)
{
    char str1[/url] = "ABCDEFGHIJKLMN";
    char str2[20];
    char *p1, *p2;
 
    p1 = str1;
    p2 = str2;

    while (*p1 != '\0') {
        p1++;
    }
    while (p1 > str1) {
        p1--;
        *p2 = *p1;
        p2++;
    }
    *p2 = '\0';
    printf("str1=%s\n", str1);
    printf("str2=%s\n", str2);

    return 0;
}
・while (p1 > str1)のp1とstr1は何を指しているのですか?
 p1がstr1より大きい間繰り返すというのは分かりますが、比較しているってことは、何か値みたいなものが
 あるのですか?

Re:ポインタを用いて文字列を逆順に格納

Posted: 2009年3月01日(日) 01:32
by コスモ
rand関数の件はどうなりましたか?
先ずそれを訊きたいのですが。

Re:ポインタを用いて文字列を逆順に格納

Posted: 2009年3月01日(日) 01:51
by BEMANI
>>馬鹿太郎さん
str1[/url] = "ABCDEFGHIJKLMN"
p1 = str1
これが、str1 と p1の値です。

Re:ポインタを用いて文字列を逆順に格納

Posted: 2009年3月01日(日) 01:57
by SCI
一応補足ですが、str1は"ABCDEFGHIJKLMN"の格納されている配列の先頭の要素へのポインタなので、値は「アドレス」です。

それから質問者さん
自分の質問に答えさせる前に、他の人からの質問にも答えたらどうでしょう。

Re:ポインタを用いて文字列を逆順に格納

Posted: 2009年3月01日(日) 02:07
by 馬鹿太郎
すいません、cosmoさん
rand関数は理解できました。

Re:ポインタを用いて文字列を逆順に格納

Posted: 2009年3月01日(日) 08:05
by box
> それから質問者さん
> 自分の質問に答えさせる前に、他の人からの質問にも答えたらどうでしょう。

今の段階では敷居が高いかもしれないので、
レベルが上がってからで十分でありましょう。

Re:ポインタを用いて文字列を逆順に格納

Posted: 2009年3月01日(日) 13:04
by non
> > それから質問者さん
> > 自分の質問に答えさせる前に、他の人からの質問にも答えたらどうでしょう。
>
> 今の段階では敷居が高いかもしれないので、
> レベルが上がってからで十分でありましょう。

SCIさんが言っているのはboxさんが言われている意味とは、違いますよ。
他の人からの質問というのは、馬鹿太郎さんに対する回答者からの質問です。
質問者としての礼儀だと思います。

Re:ポインタを用いて文字列を逆順に格納

Posted: 2009年3月01日(日) 17:19
by box
>nonさん

私が、意味を取り違えていました。