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
但它继续无限循环。为什么呢?
答案 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。
干杯