Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中只有单行输出,而不是多行输出(if/else和for组合)_C_If Statement_For Loop_Output - Fatal编程技术网

C中只有单行输出,而不是多行输出(if/else和for组合)

C中只有单行输出,而不是多行输出(if/else和for组合),c,if-statement,for-loop,output,C,If Statement,For Loop,Output,尝试运行此程序时,仅显示单行输出,而不是多行输出 #include <stdio.h> int main() { int t,i,a; scanf("%d",&t); char n[t]; for(i=0;i<t;i++){ scanf("%c",&n[i]); } for(i=0;i<t;i++){ if ((n[i]=='b')||(n[i]=='B')) {printf

尝试运行此程序时,仅显示单行输出,而不是多行输出

#include <stdio.h>
int main() 
{
    int t,i,a;
    scanf("%d",&t);
    char n[t];
    for(i=0;i<t;i++){
        scanf("%c",&n[i]);
    }
    for(i=0;i<t;i++){
        if ((n[i]=='b')||(n[i]=='B')) {printf( "BattleShip\n" );} 
        else if ((n[i]=='c')||(n[i]=='C')) {printf( "Cruiser\n" );} 
        else if ((n[i]=='d')||(n[i]=='D')) {printf( "Destroyer\n" );}
        else if ((n[i]=='f')||(n[i]=='F')) {printf( "Frigate\n" );}
    }
return 0;
}
我收到的输出是这样的

BattleShip
scanf(“%c”和&n[i])
可以读
'\n'
,所以
n[0]
'\n'
'3'
之后,
n[1]
'B'
n[2]
\n
'B'
之后。添加
getchar()
以读取
“\n”
可能会解决此问题

for(i=0;i<t;i++){
    getchar();   // <--- read additional '\m'
    scanf("%c",&n[i]);
}
for(i=0;i
scanf(“%c”,&n[i])
可以读取
'\n'
,因此
n[0]
'\n'
'3'
之后,
n[1]
'B'
n[2]
\n
'B'
之后添加
getchar getchar可以解决这个问题

for(i=0;i<t;i++){
    getchar();   // <--- read additional '\m'
    scanf("%c",&n[i]);
}

for(i=0;我尝试在调试器中单步执行代码。这将提供出色的洞察力。input
3Bcd
scanf(“%c”、&n[i]);
-->
scanf(“%c”、&n[i]);
尝试在调试器中单步执行代码。这将提供出色的洞察力。input
3Bcd
scanf(“%c”、&n[i]))
-->
scanf(“%c”和&n[i]);
正确的解决方案是将
%c”
替换为
%c”
。这样,不管有多少个空白字符。您只需获得非空白字符。@user3386109谢谢,您的评论有效正确的解决方案是将
%c
替换为
%c“
。这样,不管有多少个空白字符。您只需获得非空白字符即可。@user3386109谢谢,您的评论有效