文字列の文字の並びを反転する関数

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

文字列の文字の並びを反転する関数

#1

投稿記事 by John Doe » 10年前

#include<stdio.h>

int str_length(const char s[][128],int n)
{
int len = 0;

while(s[n][len])
len++;

return len;
}

void rev_string(char s[][128],int n)
{
int i, j, num;
char tmp;

for(i = 0;i < n;i++)
num = str_length(s,i);
for(j = 0;j < (num/2) ;j++)
{
tmp = s[j];
s[j] = s[num - j - 1];
s[num - j - 1] = tmp;
}
}

void put_strary(const char s[][128],int n)
{
int i;
for(i = 0;i < n;i++)
printf("s[%d] = \"%s\"\n",i,s);
}

int main(void)
{
char s[][128] = {"SEC","ABC"};
int i;

put_strary(s,2);
rev_string(s,2);
puts("文字の並びを反転すると以下のようになる.");
put_strary(s,2);

return 0;
}

これでは反転しませんでした何がダメなんでしょう?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 文字列の文字の並びを反転する関数

#2

投稿記事 by みけCAT » 10年前

John Doe さんが書きました:これでは反転しませんでした何がダメなんでしょう?
rev_string関数の処理がダメです。
中括弧が足りません。

コード:

void rev_string(char s[][128],int n)
{
	int i, j, num;
	char tmp;

	/* s[0], ... , s[n-1]の先頭から格納された文字列の長さを順に求める。 */
	/* s[0], ... , s[n-2]の先頭から格納された文字列の長さは捨て、s[n-1]の先頭から格納された文字列の長さをnumに格納した状態で次の処理に進む。 */
	for(i = 0;i < n;i++)
		num = str_length(s,i);
		/* 出力に関係ないs[n]について、反転っぽいけど反転処理になるとは限らない謎の処理を行う。 */
		for(j = 0;j < (num/2) ;j++)
		{
			tmp = s[i][j];
			s[i][j] = s[i][num - j - 1];
			s[i][num - j - 1] = tmp;
		}
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

John Doe

Re: 文字列の文字の並びを反転する関数

#3

投稿記事 by John Doe » 10年前

つまり・・・どうすればいいんですか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 文字列の文字の並びを反転する関数

#4

投稿記事 by みけCAT » 10年前

John Doe さんが書きました:つまり・・・どうすればいいんですか?
今の「長さをそれぞれのデータについて求めた後、無効なデータに対して謎の処理を行う」プログラムを、
「それぞれのデータについて、長さを求めた後それを用いて反転処理を行う」プログラムに修正してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

John Doe

Re: 文字列の文字の並びを反転する関数

#5

投稿記事 by John Doe » 10年前

できました!最初のfor文の中括弧がなかったのですね!見落としていました、ありがとうございます。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 文字列の文字の並びを反転する関数

#6

投稿記事 by みけCAT » 10年前

解決したのでしたら、解決チェックをお願いします。
投稿画面の「送信」ボタンの右にある「解決!」にチェックを入れた状態で返信をしてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

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