文字列の印字

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

文字列の印字

#1

投稿記事 by a » 15年前

基本課題 12..1
fgets()関数を使って入力された英数字からなる文字列のうち、偶数番目の 文字だけを表示するプログラムを作成せよ。ただし,先頭文字を0番目とする.

% ./evenCharacters
文字列 (126字まで)? Ritsumeikan
偶数番目の文字: Rtuekn
%

という問題がわかりません
私が作ったソース↓

#include<stdio.h>

#define BUFFER_SIZE (126)

int main(void){
char buf[BUFFER_SIZE];
int i;
printf("文字列(126文字まで)? ");
fgets(buf,BUFFER_SIZE,stdin);
printf("偶数番目の文字: ");
for(i=0 ; buf='\n' && i<126 ; i++){
if(i%2==0 ){
printf("%c",buf);
}
else {}
}
printf("\n");
return 0;
}


このソースでコンパイルを通して実行ファイルを実行してみると
偶数番目の文字:□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
となります。
どこを直せばよいかわかる方おしえてください。

Mist

Re:文字列の印字

#2

投稿記事 by Mist » 15年前

> buf='\n'

!=ですね。
BCCだとワーニングで指摘してくれますけど。

バグ

Re:文字列の印字

#3

投稿記事 by バグ » 15年前

forループの判定文がおかしいです。
改行記号を代入しています。

a

Re:できたが・・・・

#4

投稿記事 by a » 15年前

おかげさまで!をつけることによってコンパイルは通りましたが、出力されるのがなぜか奇数番目の文字です。
if(i%2 != 0)にすることによって、正しく表示されるのですが、なぜそうなるのかわかりません。誰か教えてください。

fatens

Re:できたが・・・・

#5

投稿記事 by fatens » 15年前

>出力されるのがなぜか奇数番目の文字です。

先頭文字は0番目として扱いますが、それを踏まえた上で、奇数番目の文字が出力されますか?

a

Re:わかりました。

#6

投稿記事 by a » 15年前

よくよく考えてみると、i=0,1,2,3(=奇数、偶数、奇数、偶数)だからiが2で割れたら奇数ってことになるんですね。ありがとうございます。たすかりました。

閉鎖

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