PDA

نسخه کامل مشاهده نسخه کامل : خطا فقط برای یک خط برنامه



zahra 67
08-05-2007, 20:41
:31: به نام پروردگار

سلام علیکم .
من در نوشتن برنامه ای به زبان c به مشکل برخوردم .

برنامه ای به زبان c،که" یک رشته و یک کارکتر "رو از ورودی دریافت بکند و
سپس محل های وجود این کارکتر رو در رشته مورد نظر بگه .

واقعا سعی کردم خودم بنویسم ،ولی به مشکل کوچیکی برخوردم .
(من اومدم یک رشته دریافت از ورودی دریافت کردم ،و اون کارکتر خاص از ورودی رو هم مثل رشته -به طول 2 - گرفتم ، بعد گفتم تمام رشته وارد شده رو بررسی کنه string[i .ببینه اگه با اون کارکتره -رشته به طول 2 - برابر شد . (با استفاده از تابع مقایسه دو رشته: strcmp) ، جاش رو چاپ کنه .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این رو براش نوشتم ،ولی فقط اون خطی که از تابع " strcmp " استفاده کردم ، خطا داره .
من می خواهم یه کسی منو راهنمایی بکنه .

با سپاس فراوان .
with best wishes zahra

someone
09-05-2007, 23:49
سلام.
بذارین این خط رو باهم بررسی کنیم :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اولین مشکلی که به چشم میاد اینه که برای مقایسه باید از == استفاده بشه نه از =
خب به این شکل اصلاحش میکنیم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اما دومین ایراد برمیگرده به تعریف آرگومان های تابع strcmp که به شکل زیر هست :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

باکدی که شما نوشتین مقایسش میکنیم. وقتی شما مینویسین [1]string ،به این معنی هست که به یک
کاراکتر اشاره میکنین.به عبارت دیگه [1]string ، فقط یه کاراکتر هست نه یک رشته. یعنی حرف دوم از رشته ی string
در صورتی که strcmp برای مقایسه دو رشته به کار میره نه دو کاراکتر.
برای مقایسه دو کاراکتر کافیه از == استفاده کنین.

ameneh
19-05-2007, 03:13
سلام زهرا جون
من يه چيزي بگم به نظرم اگه بياي اول رشته رو بگيري بعد يه حلقه بذاري از اول تا زماني كه به انتهاي رشته نرسيده تك تك كاراكتر هاي رشته رو با اون كاراكتر مفروض مقايسه كنه اگه برابر بود شمارنده حلقه رو چاپ كنه اينجوري بيتر تره فكر كنم !!!:10: اگه تونستي يه تستي بكن!!:20: