PDA

View Full Version : ساختار strcpy



hercool
دوشنبه 06 اردیبهشت 1389, 16:04 عصر
سلام خدمت تمام دوستان
من در رابطه با تابع strcpy
سوال دارم
اول اینکه این تابع چه ساختاری داره
یعنی یکجا یک رشته رو با رشته دیگه جابجا می کنه مثل swap؟
یا رشته رو به صورت ارایه ای در میاره و اجزای هر ارایه رو با همون اجزا در رشته دوم جابجا می کنه؟
بعد سوالم اینه اگه ارایه باشه پس باید چک کنه طول رشته ها با هم برابر هست یا نه
که اگر اینطور باشه در صورتی که رشته دوم بزرگتر از رشته اول باشه چه اتفاقی می افته ؟
جاهای کم رو دیگه نمینویسه یا خطای میده؟
چون می خوام یه تابع با کاربرد دقیق strcpy بنویسم
اما اول می خوام بدونم چجوری کار می کنه
ممنون میشم راهنمایی کنید

tdkhakpur
دوشنبه 06 اردیبهشت 1389, 22:08 عصر
سورس strcpy به شکل زیر انجام میشود.


char *strcpy(char *trgt, char *src)
{
int c=0
while(src[c]!=0)
trgt[c] = src[c++];
trgt[c] = 0;
return trgt;
}

دستی کد شد.

hercool
پنج شنبه 09 اردیبهشت 1389, 07:04 صبح
میشه در مورد کدتون یه توضیح بدید
همچنین اگه کسی از دوستان به سوالاتم پاسخ بده ممنون میشم

tdkhakpur
پنج شنبه 09 اردیبهشت 1389, 21:15 عصر
خب توضیح چندان زیادی ندارد فقط رشته مبدا را داخل مقصد کپی میکند ولی در حالت استاندارد فقط طول رشته مبدا را بررسی میکند و به مقصد کاری ندارد.

mohsensaghafi
جمعه 10 اردیبهشت 1389, 02:33 صبح
سلام دوست عزیز.
تابع strcpy کار swap رو انجام نمی ده. فقط رشته پارامتر دوم رو در اولی کپی می کنه. در واقع یه رشته رو بصورت کلی کپی می کنه. ( همونطور که می دونید با عملگر = نمی شه این کار رو کرد.)
و در مورد اینکه طول رشته چطوری باشه باید بگم که کنترل طول رشته در این تابع بر عهده برنامه نویس است. و اینکه اگر طول رشته مقصد کمتر از طول رشته مبدا باشه کامپایلر چه عکس العملی نشان می دهد، به نوع کامپایلر بستگی دارد.