ページ 11

tolower

Posted: 2009年5月07日(木) 17:06
by 研修生
int stricmp(const char *string1, const char *string2)
{
  char *p=string1;
  for(; *p; p++){
    *p = tolower(*p);
  }

  char *q = string2;
  for(; *q; q++){
    *q = tolower(*q);
  }

  (処理)
}
今stricmp関数の実装に挑戦してますが、文字を小文字にするという作業で詰まっています。
エラーはconst char *から char*に変換できません です。
なにかしら構成に問題があると思います。ずっと考えていますがちっともできないので1回
正解を見た方がいいのでは・・と思いますのでこの小文字への変換だけでいいのでちゃんとできる
コードを教えてもらえないでしょうか。お願いします。

Re:tolower

Posted: 2009年5月07日(木) 17:10
by Blue
マルチっぽいが。。。
http://oshiete1.goo.ne.jp/qa4938722.html

ループ中に1文字ずつ変数に入れて比較すれば書き換えなくて済むと思われますが。

以下適当
int left, right;
while (*string1 != '\0' && *string2 != '\0')
{
	left  = tolower(*string1);
	right = tolower(*string2);
	
	// 比較
	
	++string1;
	++string2;
}

Re:tolower

Posted: 2009年5月07日(木) 17:24
by 研修生
私が使ってるのはこの掲示板だけですが。。
質問が似てるんで同じ研修生かもしれません。

Re:tolower

Posted: 2009年5月07日(木) 17:30
by Blue
>私が使ってるのはこの掲示板だけですが
まえ別の掲示板で聞きます的な発言があって、その直後にスレが立ったことがあったけど。

http://www.play21.jp/board/formz.cgi?ac ... &from=tree
>Date: 2009/04/30(木) 15:44
>残念ながらわかる方がいらっしゃらないので他でご質問します。

http://oshiete1.goo.ne.jp/qa4920831.html
>質問投稿日時:09/04/30 15:43

あ、直後ではないかw

それにしてもものすごい偶然ですねwww

Re:tolower

Posted: 2009年5月07日(木) 17:38
by 研修生
同じ部屋で同じ課題に一緒に取り組んでいる研修生いるんでその人かもしれないといってるわけで。
あんま話さんからしらんけど。

Re:tolower

Posted: 2009年5月07日(木) 17:46
by Blue
つうか本題がそれていますけど。
重要なのはマルチポストしているかどうかではないので。

ちなみに、向こうの掲示板は放置スレが5つぐらいあります。
同じ部屋にいるのであれば、カナリ失礼な行為なのでレスをつけるように言っておいてもらえると
助かります。

Re:tolower

Posted: 2009年5月07日(木) 17:58
by 研修生
1人1人に○○さんですか?と聞いていくのも何かアレなんでそちらの掲示板に書き込んでおいたらいいのでは?
過去の質問的に同じ研修生ってのは間違いないかとは思いますが別グループの可能性もありますし
まぁそんな犯人探しみたいなことするほどのことでもないと思うのでそちらの掲示板に書いておいた方が
確実かとは思います。この放置っぷりは過去の質問は放置してそうな雰囲気はありますけどね。

Re:tolower

Posted: 2009年5月07日(木) 20:25
by non
const char *なので、書き換えることができません。
Blueさんが指摘されているように、1文字ずつ小文字にしながら比較するのが妥当だと
思います。どうしてもいやなら、動的に配列を確保し、そこに文字列を小文字にしながら
コピーしていくのでしょうね。

Re:tolower

Posted: 2009年5月08日(金) 11:00
by 研修生
ちょっと難しいですが考えてみますね