空白削除

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

空白削除

#1

投稿記事 by 研修生 » 16年前

getcharで入力した文字列の中の空白を削除するプログラムについてうまくいかないのでご質問します
int main()
{
  char s[100];
  int c, i;
  for(i = 0; i< (c = getchar()) !=EOF && c != '\n'; ++i){
    if(c != ' ' || c!= '\t'){
      s = c;
     }
  }
   
  s = '\0';
  printf("%s", s);
  return 0;
}


と試しに組んでましたが、希望のプログラムにはいたらず空白削除が行なわれていません。
こちらとしては一文字ずつみていって空白かタブがなければsにいれるとしているつもりですが・・

Blue

Re:空白削除

#2

投稿記事 by Blue » 16年前

空白というかゴミが入っているような。
スキップしているのに、iを進めるとそこには何も入らないです。

Mato

Re:空白削除

#3

投稿記事 by Mato » 16年前

 Blueさんの通り、例えば空白が入力されたとき(このときを仮にIとする)を考えますと、sに何も代入が行われず、未定義状態のままになりますね。

tutor

Re:空白削除

#4

投稿記事 by tutor » 16年前

if(c != ' ' || c!= '\t')
この書き方だとcの中身が何であれif文に入るのではないでしょうか?

tutor

Re:空白削除

#5

投稿記事 by tutor » 16年前

こんな感じでいいんじゃない?

int main()
{
char s[100];
int c, i,j;

for(i = 0, j = 0; i< (c = getchar()) !=EOF && c != '\n'; ++i){
if(c != ' ' && c!= '\t')
s[j++] = c;
}

s[j] = '\0';
printf("%s", s);
return 0;
}

研修生

Re:空白削除

#6

投稿記事 by 研修生 » 16年前

そういうことか・・ 理解できたと思います。
悪い点指摘していただいた方もサンプル提示していただいた方もありがとうございました。

閉鎖

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