2013-10-26 47 views
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

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

+1

连我自己都不知道为什么会出现在C. – Sadique

回答

2

在最后for你不增加i

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

你持续循环这样
+0

无限循环怎么样我+ 2? –

+1

@heidiboynww'i + 2'只需将'2'加到'i',但不要改变'i'本身,你可以做'i = i + 2'。 –

+0

是的,但是这个i + 2的值并不是给我的。每次循环迭代时,我都有相同的初始值。 – user1770426

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只是将2添加到i,但它并没有改变i,这就是它无限运行的原因。

0

你不会在最后的for循环中递增我。 for循环头中的增量(第三个字段)只是计算i + 2并不存储它。用i + = 2替换i + 2。

干杯