2013-10-26 2 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은 무한 루프가됩니다. 나는 그것을 고칠 수 없었다. 길이가 어쩌면, 홀수 인 경우 youare왜이 프로그램에서 무한 루프가 발생합니까?

그것은

yo ua re

를 인쇄해야합니다 :

예를 들어, mesaj 인 경우 tonight

to ni gh tz

그러나에 계속 무한 루프. 왜?

+1

를하더라도 내가 C. – Sadique

답변

2

마지막으로 for에서 i이 증가하지 않습니다.

아마도 : i+=2? 이 같은 루프 지속

+0

에서 무한 루프가 왜 모르는 내가 + 2는 어떻습니까? –

+1

@heidiboynww'i + 2'는'i'에'2'를 추가하지만'i' 자체는 변경하지 않습니다. i = i + 2'를 할 수 있습니다. –

+0

예.하지만이 i + 2 값은 i에 할당되지 않습니다. 루프가 반복 할 때마다 i는 동일한 초기 값을가집니다. – user1770426

0

변경 :

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

대신으로 현재 증가 후 i의 가치가 무한히 실행하기 i에 다시 할당되지 않은

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

.

i + 2i에 2를 더하고 있지만 i은 변경되지 않으므로 무한대로 실행됩니다.

0

마지막 for-loop에서 i가 증가하지 않습니다. for 루프 헤드의 증분 (세 번째 필드)은 i + 2를 계산하고 다시 저장하지 않습니다. i + 2를 i + = 2로 바꿉니다.

건배

관련 문제