PDA

View Full Version : آرایه از نوع char



mr_esmaily
جمعه 13 شهریور 1383, 12:56 عصر
سلام
من می خوام آرایه ای از نوع char رو تعریف و استفاده کنم ولی با مشکل زیر مواجه میشم:
وقتی اونو بصورت

char x[]="Ok";
می نویسم درست کار میکنه ولی وقتی می نویسم

char x[];
x="Ok";
خطا میگیره.
( البته از ++C استفاده می کنم )

whitehat
جمعه 13 شهریور 1383, 17:40 عصر
شما در هنگام تعریف نوع می توانید این کار را انجام دهید .بعد از آن دیگر کامپایلر به آن به جشم یک اشاره گر نگاه می کند بنابراین حطای type Mismatch را می گیرید .تعریف یک ارایه به مغنی یک اشاره گر به خانه اول آن می باشد.ولی در هنگام کامپایل اگر چیزی به ان نسبت دهید مقدار دهی میشود و حافظه به آن تخصیص داده می شود.
موفق باشید

Inprise
شنبه 14 شهریور 1383, 09:42 صبح
یکی از این دو کار رو میتونی بکنی :


char mystring[] = { 'H', 'e', 'l', 'l', 'o', '\0' };


char mystring [] = "Hello";

اما نمیتونی بنویسی :


mystring[] = "Hello";

برای اینکه دیگه با چنین مشکلی مواجه نشی بخاطر بسپار : انتساب چند مقدار ثابت به یک آرایه فقط هنگام تعریف اون ممکنه . ( وقتی داری به یک آرایه از جنس کاراکتر چند حرف رو نسبت میدی در واقع داری بصورت همزمان چند مقدار ثابت رو بهش منتسب میکنی )

دلیلش همونطوری که گفته شد اینه که آرایه ها در C در واقع یک اشاره گر ثابت ( Constant Pointer ) هستند و فقط موقع Initialization میتونن مقدار صریح دریافت کنن . بعد از تعریف آرایه میتونی به این شکل :


mystring[0] = 'H';
mystring[1] = 'e';
mystring[2] = 'l';
mystring[3] = 'l';
mystring[4] = 'o';
mystring[5] = '\0';

یا با استفاده از توابعی مثل strcpy به این شکل :


strcpy (mystring, "Hello");

یا setstring به این شکل :


setstring (mystring,"Hello");

یا روشهائی مثل این بهش مقدار بدی .

موفق باشید :)

good_devil
شنبه 14 شهریور 1383, 21:11 عصر
یک روش رو که دوستان گفتن

روش دیگر استفاده از typedefهستش

اگه مشکلی بود بنده در خدمتم :oops:

mr_esmaily
یک شنبه 15 شهریور 1383, 17:45 عصر
سلام
مرسی :flower:

armin390
سه شنبه 17 شهریور 1383, 02:49 صبح
typedef :!:

Pars Giga
یک شنبه 15 خرداد 1384, 10:04 صبح
char *str[]={"Hello"};
printf("%s",str);