ページ 11

文字列の初歩的な問題で苦戦しています

Posted: 2008年4月17日(木) 12:33
by YK
文字列を入力したとき、その中に「A」が含まれていたら「B」に書き換えて表示する
プログラムを作成せよ。という問題です。(「ABC」の場合、「BBC」になる)
自分なりにやってはみたのですが、文字の書き換えが上手くいっていないようです。
どの辺りがおかしいのかご教授頂けないでしょうか。

#include <stdio.h>

void exchange(const char ch[/url])
{
unsigned i = 0;

while (ch){

if(ch=='A')
ch=='B';

putchar(ch);
i++;

}

}

int main(void)
{
char ab[100];

scanf("%s",ab);

exchange(ab);

return(0);
}

Re:文字列の初歩的な問題で苦戦しています

Posted: 2008年4月17日(木) 12:53
by バグ
>> ch=='B';

これがおかしいですね。

ch = 'B';

でないと置き換えはできません。

Re:文字列の初歩的な問題で苦戦しています

Posted: 2008年4月17日(木) 13:05
by マルクス
const 修飾子があるとうまくいかないと思いますよ!
ググってみましょうw

Re:文字列の初歩的な問題で苦戦しています

Posted: 2008年4月17日(木) 13:58
by toyo
元の文字列を変更しないで表示だけなら
void exchange(const char ch[/url])
{
	unsigned i = 0;
	
	while (ch) {
		if(ch=='A') {
			putchar('B');
		} else {
			putchar(ch);
		}
		i++;
	}
}

Re:文字列の初歩的な問題で苦戦しています

Posted: 2008年4月18日(金) 00:13
by YK
呆れる様な単純なミス申し訳ありません。
返信して下さった方の内容を踏まえた結果、上手く動きました。

稚拙な質問にお答え頂き大変ありがとうございました。