PDA

View Full Version : مبتدی: سوال درباره تابع strncpy



ninjacvb
دوشنبه 09 مرداد 1391, 18:36 عصر
strncpy(adr_unix.sun_path,pth_unix,
sizeof adr_unix.sun_path-1)
[sizeof adr_unix.sun_path-1] = 0;


ببخشید خط سوم چه کاری انجام میده دقیقا؟
چون من قطعه کد بالا رو به قطعه کد زیر تغییر دادم ولی بازم برنامه اجرا شد.


strncpy(adr_unix.sun_path,pth_unix,
sizeof adr_unix.sun_path-1);

#target
دوشنبه 09 مرداد 1391, 19:32 عصر
[] نشان آرایه در C . که آدرش شروع آرایه هم قبلش قرار میگیره (که در اینجا آدرس شروع آرایه شروع رشته ای که تابع برمیگردانه ) . میاد خانه ای از آرایه (در اینجا آخرین بایت اون رشته) رو برابر صفر قرار میده ! (میخواد ته رشته رو NULL کنه)

amin1softco
دوشنبه 09 مرداد 1391, 19:55 عصر
اینجور که من متوجه شدم یک چیزایی زمان کامپایل و اجرا شدن مشخص می شه size of خط [sizeof adr_unix.sun_path-1] = 0; یک اشاره گر به آخرین بایت بافر بر می گردونه یعنی کارکتر آخر .و بوسیله 0 یا "0/" پایان رشته مشخص می شه.
این خط بیشتر برای محکم کاری است که اگر به هر دلیل کارکتر خاتمه دهنده رشته از بین رفت بوسیله این خط دوباره اصلاح بشه.
+ (http://forums.codeguru.com/showthread.php?225325-lt-HELP-gt-Syntax&)

Navid_QQQ
دوشنبه 09 مرداد 1391, 22:21 عصر
http://www.cplusplus.com/forum/beginner/57796/