PDA

View Full Version : daynamic memory allocatoin



tl_le0
پنج شنبه 03 خرداد 1386, 01:36 صبح
با سلام دوباره خدمت بچه های فروم
من دوباره بر گشتم با مشگلی تازه
این کد رو نگاه کنید

#include <stdio.h>
#include <stdlib.h>
int main(){int i;
char *string1[10];
for(i=0;i<10;i++){
string1[i]=(char *)malloc(10*sizeof(char));}
for(i=0;i<3;i++){
scanf("%s",string1[i]);}
for(i=0;i<3;i++){
printf("\n%s ",string1[i]+3);}
getch();
return 0;
}

اگر به عنوان رشته ی اول "ابیسلت" رو به عنوان مثال وارد کنید
در خروجی به شما "سلت" رو چاپ می کنه در حالی که من به کارکتر "ی" می خواهم اشاره کنم
راهنمایی کنید
ممنون

mzjahromi
پنج شنبه 03 خرداد 1386, 06:32 صبح
اگر فقط ی رو میخواهید چاپ کنید بجای %s فکر کنم باید %c بذارید

tl_le0
پنج شنبه 03 خرداد 1386, 23:09 عصر
من مشکلم چاپ کردن نیست که وگرنه می شه کلی کلک واسه چاپ کردن ی کرد
من می خوام روشه صحیح اشاره کردن به این جای حافظه رو یاد بگیرم و این کد فقط یه مثال بود

saeid5977
پنج شنبه 03 خرداد 1386, 23:20 عصر
سلام
خوب باید مثل آرایه 2 بعدی باهاش کار کنی
میشه:

string1[0][2]

*(&string[0]+2)

tl_le0
شنبه 05 خرداد 1386, 00:00 صبح
آقای saeid5977
یه چیز های عجیب و غریبی تو مونیتور نشون میده !!!!؟؟؟؟

saeid5977
شنبه 05 خرداد 1386, 01:48 صبح
printf رو به اینصورت استفاده کنید:



printf("%c",string1[0][2]);
printf("%c",*(string1[0]+2));

tl_le0
شنبه 05 خرداد 1386, 23:34 عصر
عزیزم منم همینکارو کردم که میگم چیزهای عجیب و غریب نشون میده

#include <stdio.h>
#include <stdlib.h>
int main(){int i;
char *string1[10];
for(i=0;i<10;i++){
string1[i]=(char *)malloc(10*sizeof(char));}
for(i=0;i<3;i++){
scanf("%s",string1[i]);}
for(i=0;i<3;i++){
printf("\n%c ",*(&string1[i]+3));}
getch();
return 0;
}

saeid5977
یک شنبه 06 خرداد 1386, 00:47 صبح
2+ نه 3+ !

ببخشید باید علامت & حذف بشه!:خجالت:
البته کد اول درست بود!

آخر برنامه free رو هم باید صدا بزنی.

موفق باشی.