dポイントプレゼントキャンペーン実施中!

こんにちは。
閲覧していただきありがとうございます。
長文になりますが勉強がわからず困っているので、ご助力いただけると助かります。

C言語についてです。
文字列の中に、特定の文字が出てきたときにだけ改行して表示するプログラムを作りたくて、以下のようにしてみました。(文字はアルファベット小文字のみです)

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

int main(){
 char str[200];
 int i;
 int k;

 puts("文字列を入力");
 gets(str);

 k = strlen(str);
 for(i=0;i<k;i++){
  if(strcmp(str[i],"n")==0)
   printf("\n");
  printf("%c",str[i]);
  }
 return 0;
}

このプログラムにより期待する結果は、例えば入力した文字列が「abcdne abcn d」だとすれば、nが来たときに改行が実行されて
abcd
ne abc
n d
と表示されるようにしたいのですが、strcmpにintは渡せないとか、ポインタを使ってみても、実力不足ゆえに、「移植性のないポインタ変換」とかのエラーしか出ません。
どのようにすれば、この結果を得ることができるのでしょうか?

ぜひご教授ください。よろしくお願いします。

A 回答 (3件)

if(str[i]=='n') 改行



素直になりましょう。
    • good
    • 0
この回答へのお礼

解答ありがとうございます。
どうやら深く考えすぎていたようです。
なるべくシンプルにいくのが大切なんですね。
ありがとうございました!助かりました。

お礼日時:2011/09/07 11:52

>if(strcmp(str[i],"n")==0)


>printf("\n");

のところを、

if(str[i]=='n')
putchar('\n');
    • good
    • 0

大昔C言語で鳴らした者です(--;)



 if(strcmp(str[i],"n")==0)

ってところがダメだと思います。strcmpの引数はchar*でないといけないのに、str[i]を渡しているところがダメかと。

治すなら
 if (strncmp (&str[i], "n", strlen("n"))==0)
とするといいんじゃないですかね。ちょっと汚いコードですが、動いたらきれいにしていけばいいと思います。
    • good
    • 0
この回答へのお礼

解答ありがとうございます。
さっそくやってみたところ、strcmpの引数は二つまでなので、実行はできませんでしたが、
これを元に少し変えてみたところ動くようになりました。
ありがとうございました。

お礼日時:2011/09/07 11:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!