为什么在这个程序中无限循环?

时间:2013-10-26 11:27:42

标签: c infinite

scanf("%d",&uzunluk);

mesaj=(char*)malloc ((uzunluk+1)*sizeof(char));
for (i=0 ;i<uzunluk; i++)
{
    scanf(" %c",&mesaj[i]);
}

if (uzunluk%2==1)
{
    mesaj[uzunluk]='z';
}

for (i=0; i<=uzunluk+(uzunluk%2)-2; i+2)
{
    printf("   %c%c",mesaj[i],mesaj[i+1]);
}

最后for进入无限循环。我无法解决它。

例如,如果mesaj是:youare

应打印

yo ua re

如果长度是奇数,可能是:tonight

to ni gh tz

但它继续无限循环。为什么呢?

3 个答案:

答案 0 :(得分:2)

在上一个for中,您不会增加i

也许你的意思是:i+=2

答案 1 :(得分:0)

最后改变你的循环:

for(i=0;i<=uzunluk+(uzunluk%2)-2;i+=2)

而不是

 for(i=0;i<=uzunluk+(uzunluk%2)-2;i+2)

目前增量后i的值未分配回i,使其无限运行。

您的i + 2只是向i添加了2,但它没有改变i,这就是它无限运行的原因。

答案 2 :(得分:0)

你没有在最后一个for循环中递增i。 for循环头中的增量(第三个字段)只是计算i + 2而不是将其存储回来。用i + = 2替换i + 2。

干杯