ポインタを使用した文字反転処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
困り果てた大地

ポインタを使用した文字反転処理

#1

投稿記事 by 困り果てた大地 » 13年前

#include <stdio.h>
#include <string.h>

#define MAX_WARD 256

void main(void)
{
//===変数宣言===
char aDataIn[MAX_WARD]; //反転前文字列入力先
char aDataOut[MAX_WARD]; //反転後文字列格納先
char *pDataIn, *pDataOut; //反転前・後配列操作用ポインタ
int nStrlength; //入力文字数
int nLoopCntWord; //反転処理ループ用

printf("何か文字を入力してください(255文字以内)>");
scanf("%s", &aDataIn);

nStrlength = (int)strlen(aDataIn);
printf("\マークn文字数は「%d」文字です。\n", nStrlength);

//===文字列の反転処理===
pDataIn = ■■■■■■; //aDataIn の最終文字位置
pDataOut = ■■■■■■; //aDataOutの先頭
for( nLoopCntWord = 0; nLoopCntWord < ■■■■; nLoopCntWord ++)
{
■■■■■■ = *pDataIn;

pDataIn ■■;
pDataOut ■■;
}
■■■■■■ = ■■; //ここを入力せずに実行すると…

printf("*** 反転処理完了 ***\n");
printf("入力した文字列:%s\n", aDataIn);
printf("反転した文字列:%s\n", aDataOut);

rewind(stdin);
getchar();
}
ポインタを使用して入力された文字を反転する処理をしたいのですが黒い部分がよくわかりません。

アバター
バグ
記事: 130
登録日時: 15年前
住所: 愛媛県
連絡を取る:

Re: ポインタを使用した文字反転処理

#2

投稿記事 by バグ » 13年前

穴埋め問題なので、埋めてしまうと答えそのまんまになりますので、ちょっと形を変えてみました。
コメントを入れてありますので、順番に処理を追いかけていってみてください。

コード:

#include <stdio.h>
#include <string.h>

#define MAX_WARD 256

// 文字列の反転処理
void reverse(char* pStrIn, char* pStrOut, int nStrLen)
{
	pStrIn += (nStrLen - 1);
	*(pStrOut + nStrLen) = '\0';
	for (int i = 0; i < nStrLen; ++i)
	{
		*pStrOut++ = *pStrIn--;
	}
}

void main(void)
{
	char aDataIn[MAX_WARD];					// 反転前文字列入力先
	char aDataOut[MAX_WARD];				// 反転後文字列格納先
	int nStrLen = 0;

	// 文字列の入力
	printf("何か文字を入力してください(255文字以内)>");
	scanf("%s", &aDataIn);

	// 文字列長の表示
	nStrLen = (int)strlen(aDataIn);
	printf("\n文字数は「%d」文字です。\n", nStrLen);
	
	// 反転処理
	reverse(aDataIn, aDataOut, nStrLen);

	// 結果表示
	printf("*** 反転処理完了 ***\n");
	printf("入力した文字列:%s\n", aDataIn);
	printf("反転した文字列:%s\n", aDataOut);
	rewind(stdin);
	getchar();
}

困り果てた大地

Re: ポインタを使用した文字反転処理

#3

投稿記事 by 困り果てた大地 » 13年前

>>バグさん
わざわざありがとうございます。
解読してみます

困り果てた大地

Re: ポインタを使用した文字反転処理

#4

投稿記事 by 困り果てた大地 » 13年前

見栄張って解決済みにして、すみませんでしたー!わかりません!

pDataIn = ■; pDataOut = ■;
for( nLoopCntWord = 0; nLoopCntWord < nStrlength; nLoopCntWord ++)
{
nStrlength = *pDataIn;

pDataIn --;
pDataOut ++;
}
■ = '\0';

もはや限界っ!お助け願います

閉鎖

“C言語何でも質問掲示板” へ戻る