PDA

View Full Version : سوال: مشکل در نوشتن رشته به زبان c



cloner11
پنج شنبه 19 دی 1392, 15:41 عصر
با سلام من میخوام برنامه ای بنویسم که یک رشته بگیره و برعکس چاپ کنه ولی دوتا مشکل برخوردم.

برنامه :



#include <stdio.h>
#include <conio.h>
void main()
{
char p[20];
int i;
scanf("%s", p);
for(i = 0; p[i+1] != NULL; i++)
;
for(; i>=0; i--)
printf("%c", p[i]);
printf("\n");
getch();
}





مشکل اول این که اگر علامت;بین دو حلقه for رو نذارم برنامه بینهایت کارکتر اول رشته رو چاپ میکنه! دلیلش چیه؟
مشکل دوم اگر بین حروف رشته فاصله بزارم از اون جا به بعد رو حساب نمیکنه یعنی اگر بزنم 456 123

چاپ میکنه:
321

Faraz Mehraien
پنج شنبه 19 دی 1392, 16:19 عصر
برای سوال اول:چون حلقه for نقطه ی پایان نداره ,خوب تا بینهایت چاپ می شه.
برای سوال دوم: تو c++ که از gets برای دریافت رشته با فاصله استفاده می شه که در هدر stdio.h قرار داره.نمی دونم تو c جواب بده یا نه؟؟

cloner11
پنج شنبه 19 دی 1392, 18:12 عصر
ممنون که پاسخ دادید فقط یه برنامه دیگه هم هست که انتظار دارم عدد31 رو چاپ کنه ولی آخرین مقدار توی حافظه رو میزنه


#include <stdio.h>
#include <conio.h>
void main()
{ int i;
for(int i=1;i<=30 ;i++)
{

}


printf("%d",i);

getch();
}

sr2m72
پنج شنبه 19 دی 1392, 23:25 عصر
ممنون که پاسخ دادید فقط یه برنامه دیگه هم هست که انتظار دارم عدد31 رو چاپ کنه ولی آخرین مقدار توی حافظه رو میزنه


#include <stdio.h>
#include <conio.h>
void main()
{ int i;
for(int i=1;i<=30 ;i++)
{

}


printf("%d",i);

getch();
}




سلام
چون متغیر i رو دوبار تعریف کردی.
یک بار داخل حلقه و یک بار قبل از حلقه.

موفق باشید//

Faraz Mehraien
جمعه 20 دی 1392, 11:45 صبح
ممنون که پاسخ دادید فقط یه برنامه دیگه هم هست که انتظار دارم عدد31 رو چاپ کنه ولی آخرین مقدار توی حافظه رو میزنه


#include <stdio.h>
#include <conio.h>
void main()
{ int i;
for(int i=1;i<=30 ;i++)
{

}


printf("%d",i);

getch();
}




می تونی کدتو اینجوری هم تغییر بدی.
#include <stdio.h>
#include <conio.h>
int main()
{
int i;
for( i=1;i<=30 ;i++)
{

}


printf("%d",i);

getch();
return 0;
}