0
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

但它一直在无限循环。为什么?

4

3 回答 3

2

在最后for你不增加i

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

于 2013-10-26T11:30:18.043 回答
0

像这样改变你的最后一个 for 循环:

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

代替

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

因为目前iafter increment 的值没有分配回i使其无限运行。

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

于 2013-10-26T11:32:11.827 回答
0

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

干杯

于 2013-10-26T11:35:26.160 回答