打印某些阵列

时间:2014-02-17 23:51:34

标签: c arrays

我试图从我的表中打印并计算某个数组。我想打印'O'并计算弹出的次数。计数部分我得到了它但是以表格格式打印'O'我不能。每当我试图打印'O'时,它就会给我带来快乐的面孔。

char poste[]={'A','P','A','P','A','O','P','P','O'};
for(i=0;i<9;i++)
{
    if(poste[i]=='O') count++;
}

printf("Number of operators :%d\n", count);
printf("Poste\n");

for(i=0; i<9;i++)
{
    printf("%c",poste[i]=='O');
}

执行给了我这些幸福的面孔

Poste   
A       
P       
A      
P      
A      
O       
P      
P       
O      
number of operators :2
Poste
☺  ☺

4 个答案:

答案 0 :(得分:2)

您正在打印poste[i]=='O'。你想要做的是如下:

for ( i = 0; i < 9; i++ )
    if ( poste[i] == 'O' )
        printf ( "%c", poste[i] );

答案 1 :(得分:0)

您的专线printf("%c",poste[i]=='O')正在打印一个字符。哪个角色?好吧,poste[i]=='O'是一个条件。条件返回truefalse。当这些值转换为字符时,它们将首先转换为int 10,然后转换为char,'☺'(这是ascii值为1的字符)或'NULL'。

你想要的是用if语句检查条件,然后printf实际的字符:

if ( poste[i] == 'O' ) {
    printf ( "%c", poste[i] );
}

答案 2 :(得分:0)

printf("%c",poste[i]=='O');

这里poste[i] == 'O',评估为1(真,poste[i]等于'O')或0(假,它不相等)。

此结果属于int类型,但您告诉printf它是char。由于intchar s的类型不同且大小不相同,因此会导致奇怪的未定义的行为。在这种情况下,计算机开始像疯子一样咧着嘴笑。

如果要打印1或0以表示相等更改为%c%i(或%d)。如果您想在每次相等时打印'O',请将其更改为

if(poste[i] == 'O'){
    printf("%c", poste[i]);
}

请注意,到那时你也可以打印

printf("O");

因为你知道它只会打印'O's

答案 3 :(得分:0)

您正在打印表达式poste[i]=='O'的结果 替换printf("%c",poste[i]=='O');
if (poste[i] == 'O') printf("O");