PDA

View Full Version : مبتدی: کپی کردن رشته یا مقایسه رشته با while



samira_66
جمعه 26 اردیبهشت 1393, 14:09 عصر
تفاوت بین این while ها



viod test (char *s , char *t)
{
while ( *s++==*t++)
}
-----------------------
viod test (char *s , char *t)
{
int i=0;
while ((s[i[=t[i])!='\0')
i++;
}

hostage_devil
چهارشنبه 31 اردیبهشت 1393, 00:14 صبح
تفاوت بین این while ها



viod test (char *s , char *t)
{
while ( *s++==*t++)
}
-----------------------
viod test (char *s , char *t)
{
int i=0;
while ((s[i[=t[i])!='\0')
i++;
}







سوالتون رو متوجه نشدم
میخواین برنامه ای بنویسین که دو رشته رو مقایسه و یا کپی کنه ؟

این دو نمونه کدی که شما نوشتین جفتش اشتباهه

hadi0x7c7
چهارشنبه 31 اردیبهشت 1393, 01:49 صبح
هیچ فرقی ندارن، در واقع دومی تبدیل میشه به اولی،

samira_66
چهارشنبه 31 اردیبهشت 1393, 13:52 عصر
یک تست بوده
نتونستم نشخیص بدم کپی میکنه یا مقایسه

emadrezvani
چهارشنبه 31 اردیبهشت 1393, 16:54 عصر
رجوع به کتاب ANSI C نوشته ریچی کنید(یکی از مثال های بخش اشاره گرهای کتاب می باشد). در واقع فرقی با هم نمی کنند. هردو حلقه با رسیدن به نال بایت متوقف می شوند.در حلقه اول از دو مساوی به معنی انتصاب و در شرط دوم از آرایه و انتقال کارکتر استفاده شده است. در حلقه دوم s باید بصورت :
while ((s[i]=t[i])!='\0')
باشد.

(while(c=1) printf(cpp=0
چهارشنبه 31 اردیبهشت 1393, 17:37 عصر
یک تست بوده
نتونستم نشخیص بدم کپی میکنه یا مقایسه

برنامه ها مشکل دارن.
اگر دغدغه شما کلمه کلیدی while هست، پس به دو مثال رو به رو توجه کنید :

#include <stdio.h>
int main(void)
{
char a = 'w';
char b = 'w';
int i = 1;
while (a == b && i > 0) /*تا وقتی که متغیر آ مساوی با متغیر ب است، و تا وقتی که متغیر آی بزرگتر از صفر است*/
{
printf("baleh, a mosavi ba b ast"); /*چاپ کن*/
--i; /*.یکی از متغیر آی کم شد و در نهایت به صفر رسید و برنامه خاتمه یافت*/
}
}


#include <stdio.h>
int main(void)
{
char a = 'b';
char b = 'a';
int i = 1;
while ((a = b) != '\0' && i > 0) /*اول مقدار داخل متغیر ب به داخل متغیر آ می رود، و بعد حلقه اجرا می شود
حلقه: تا وقتی که آ مساوی با صفر نیست و متغیر آی بزرگتر از صفر است*/
{
printf("%c", a); /*چاپ کن*/
--i; /*.یک رقم از مقدار داخل متغیر آی کم شد و در نهایت به صفر رسید و برنامه نیز خاتمه یافت*/
}
}


در برنامه اول: while متغیرهای a و b رو با هم مقایسه می کنه که اگر باهم مساوی بودن، رشته داخل تابع printf چاپ میشه.
در برنامه دوم: اول مقدار داخل متغیر b کپی میشه به داخل متغیر a، بعدش مقایسه شروع میشه -- که یعنی اگر مقدار داخل متغیر a مساوی با صفر نیست (که نیست)، مقدار داخل متغیر a توسط تابع printf در خروجی چاپ میشه.

موفق باشی.