C 什么';我的程序有什么错误?

C 什么';我的程序有什么错误?,c,logic,C,Logic,我编写了这个C程序: main() { int i,k; char a[]="ilovefootbalonly\n"; printf("enter 1 or 2\n"); scanf("%d",&k); switch(k) { case'1':for(i=0;i<=16;i++) { i+=1; printf("%-16.*s\n",i,a); } break; case'2':for(i=16;i>=0

我编写了这个C程序:

main()
{
int i,k;
char a[]="ilovefootbalonly\n";
printf("enter 1 or 2\n");
scanf("%d",&k);
switch(k)
{
    case'1':for(i=0;i<=16;i++)
    {
        i+=1;
        printf("%-16.*s\n",i,a);
    }
    break;
    case'2':for(i=16;i>=0;i--)
    {
        i+=1;
        printf("%*.*s\n",16,i,a);

    }
    break;
}
即使我的程序编译时没有错误,但当我运行它时,在我输入
1
2
后,它会停在那里,那么我在哪里犯错误呢


我是stack overflow和C的新手,因此如果您能原谅我在发布此类问题时出现的任何小错误,我将不胜感激。

您的案例标签不正确。你的意思是1和2,而不是
'1'
'2'
。后者是字符文字(数值为49和50)

此外,由于“football”的拼写错误,您的字符串实际上由16个字符组成(加上一个终止符)。要么修复这个问题,要么将循环运行到15而不是16

另一件事是,案例2中的循环永远不会终止:
i--
将取消循环体中的
i+=1
。同样,案例1将以预期频率的两倍运行索引


并考虑使用<代码> int()/<代码>作为函数原型。

程序停止,因为它到达程序的末尾。将“案例'1':”更改为
案例1:
案例'2':
更改为
案例2:
,然后它应该跳转到案例1或案例2。此外,你增加了我两倍。(i=0;i“案例'1'”的
中的第一个您可以将字符常量与读取为整数的输入值进行比较。1!=“1”I递增
I
,因为我认为,从那时起,我在20个位置中分配了16个位置,因此在结尾处应该为
\0
额外添加一个字符串。那么,您实现了更改吗?因此您可以告诉我们您的输出是什么。我猜是w我将跳过每个2.字符。输出很好,除了它不仅仅在
ilovebooball
处停止,而是在
iloveboobally
处停止……我认为如果我限制
iPlus one来发现两倍增长的情况,这可以得到纠正。
i

il

ilo

ilov

.

.

.

.

ilovefootbal