2013-10-26 82 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。

乾杯