11001

[code]

    #include <stdio.h>
    #include <string.h>
    
    int main(){
        int len, i;
        char ch[] = "today";
        len = strlen(ch);
    
        for(i = 0; i < len; i++){
            if(i % 2 == 0){
                printf("%s\n", ch[i]);
            }
        }
    
        return 0;
    }
    
[/code]

といったプログラムを作りました。  
これを実行すると偶数目であるoとaが表示されると思ったのですが、表示されません。  
なぜでしょうか？


CC BY-SA 3.0
2015-06-05T05:47:38.070
10999
2015-06-10T01:22:17.600
2015-06-05T05:52:41.440
3639
9850
question
c
C言語で偶数目の文字を表示する


`ch[i]` は文字ですので、`printf` の書式文字列には `%c` を指定します。(なお、"o" と "a"
を表示したい場合は、条件を少し変更する必要があります。)


CC BY-SA 3.0
2015-06-05T05:54:33.410
11001
2015-06-05T05:54:33.410
76
10999
answer


i が 0 から始まっているからです。  
以下の様な条件にすると期待する動きになります。

[code]

    if ((i + 1) % 2 == 0) {
    
[/code]

あと、printf文は %c を使うよう、修正する必要があります。

[code]

    printf("%c\n", ch[i]);
    
[/code]


CC BY-SA 3.0
2015-06-05T06:02:53.747
11002
2015-06-05T06:02:53.747
9529
10999
answer


配列の添え字は0から始まります。

[code]

    ch[0] : t
    ch[1] : o
    ch[2] : d
    ch[3] : a
    ch[4] : y
    
[/code]

です。


CC BY-SA 3.0
2015-06-06T02:04:41.500
11021
2015-06-10T01:22:17.600
2015-06-10T01:22:17.600
440
8823
10999
answer


~/test cat tst11.c

[code]

    #include <stdio.h>
    
    int main()
    {
        char *str= "today";
        //
        for( int i= 0; *str; i++ ){
            if(( i & 1 ) != 0){
                putchar(*str);
            }
            str++;
        }
        //
        putchar('\n');
    
        return 0;
    }
    
[/code]

~/test ./a.out  
oa  
~/test


CC BY-SA 3.0
2015-06-09T21:51:49.300
11195
2015-06-09T21:51:49.300
9528
10999
answer