#1
by 弱者 » 4年前
ポインタを使って文字列を反転させるプログラムを作っています。
いろいろ試してみたのですがどうもうまくいきません。
m_ptの出力結果がFのみでgyakuの出力結果が何も出ません。
どこが間違えているのかわからないので指摘していただきたいです。
#include<stdio.h>
#include<string.h>
int main(void)
{
char mojiretsu[13] = "ABCDEFGHIJKL"; //元の文字列
char gyaku[13] = ""; //変更後の文字列
char* m_pt1; //文字列ポインタ
char* m_pt2;
printf("▽変更前の情報\n");
printf("mojiretsu配列の中身は……「%s」\n", mojiretsu);
printf("\n");
//代入
m_pt1 = mojiretsu;
m_pt2=gyaku;
//NULLの手前まで移動
m_pt1 = mojiretsu + strlen(mojiretsu);
//NULLから格納されるのでプラス1
m_pt2 = gyaku+1;
for (int i = 0; i < strlen(mojiretsu); i++)
{
*m_pt1 = *m_pt2;
m_pt1--;
m_pt2++;
}
//文字列制御/↑ここまで///////////////////////
printf("▽変更後の情報\n");
printf("m_pt1配列の中身は……「%s」\n", m_pt1);
printf("\n");
printf("gyaku配列の中身は……「%s」\n", gyaku);
getchar();
return 0;
}
ポインタを使って文字列を反転させるプログラムを作っています。
いろいろ試してみたのですがどうもうまくいきません。
m_ptの出力結果がFのみでgyakuの出力結果が何も出ません。
どこが間違えているのかわからないので指摘していただきたいです。
#include<stdio.h>
#include<string.h>
int main(void)
{
char mojiretsu[13] = "ABCDEFGHIJKL"; //元の文字列
char gyaku[13] = ""; //変更後の文字列
char* m_pt1; //文字列ポインタ
char* m_pt2;
printf("▽変更前の情報\n");
printf("mojiretsu配列の中身は……「%s」\n", mojiretsu);
printf("\n");
//代入
m_pt1 = mojiretsu;
m_pt2=gyaku;
//NULLの手前まで移動
m_pt1 = mojiretsu + strlen(mojiretsu);
//NULLから格納されるのでプラス1
m_pt2 = gyaku+1;
for (int i = 0; i < strlen(mojiretsu); i++)
{
*m_pt1 = *m_pt2;
m_pt1--;
m_pt2++;
}
//文字列制御/↑ここまで///////////////////////
printf("▽変更後の情報\n");
printf("m_pt1配列の中身は……「%s」\n", m_pt1);
printf("\n");
printf("gyaku配列の中身は……「%s」\n", gyaku);
getchar();
return 0;
}