السلام عليكم
هل هي الدالة strcmp()
مع الملاحظة اني جربتها ولكن مازبتط باستخدام المعالج Visual c++
السلام عليكم
هل هي الدالة strcmp()
مع الملاحظة اني جربتها ولكن مازبتط باستخدام المعالج Visual c++
هي فعلا
الدالة
lstrcmp
أو الماكرو
strcmp
يقارن بين نص ونص أو مصفوفة حروف ومصفوفة أخرى
وإذا كانا متساويين مئة بالمئة ترجع 0
أما إذا أردت مقارنة كلمة في جملة
تستخدم الدالة
strstr
وتوجد دوال كثير للمقارنة مع الشروط
مثل الدالة
strcmpi
وغيرها
*************************************************
مجموعة مواضيع - إحتراف البرمجة -
ّ~~~~~~~~~~~~~~~~~~~~~~
البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة
آخر المواضيع :
أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات
ثغرة SMS لأجهزة الجوال Siemens 3568i !
أخطاء وثغرات البرامج العربية !!!
سلسلة مواضيع - أمن وحماية مواقع الويب -
E البرمجة المتقدمة X للملفات التنفيذية E
سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة
**************************************************
<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>
**************************************************
jaas
اشكرك جزيل الشكر على هذا الرد السريع والرائع
لكن اخي جربتها بالمعالج visual c++ ولم تنفع ؟
#include <stdio.h>
#include <conio.h>
void main()
{
char pass[10];
do{
printf("Enter The passWord");
scanf("%s",pass);
}while(strcmp(pass,"god")!=0);
}اخي انا مبتدأ وصراحة لا انا بجامعة ولا مفروض علي هذا الشي
لكن حبي برمجة والفضول دعاني للتعلم
الكود الاعلى ماهو الخطأ فيه ...؟؟
والف شكر الك كمان مرة
والله بداية مشجعة من مبتديء وطريقك للإحتراف
ولكن خذ هذي النصائح لأنها ستفيدك كثيييير
خلينا من طريقة كتابتك للكود أولا
أنت عرفت
char pass[10]
وهذا كما تعرف مصفوفة من 10 حروف صح
وقارنتها بكلمة
god
إلي هي 3 حروف ما لاحظت شيء
في هنا شيء عندما تعرف المصفوفة فإن المترجم يحجز موقع في الذاكرة
هذا الموقع لا يساوي الصفر دائما
بمعنى بمجرد كتابة
char pass[10]
فإنها تساوي مثلا
"ةوءيس44545ب4"
وبعد ما تضيف لها أي نص مثلا
god
تصير تساوي
god4dae54567
فدائما عندما تريد تعريف مصفوفة لتستخدمها في المقارنة طبق هذا المثال
char pass[10]; ZeroMemory(pass,10)
وفي شيء ثاني
الدورات
دائما لا تستخدم أي دالة للمستخدم داخل دورة في مثالك
printf
وفي شيء بعد إنت كتبت برنامج كونسل يعني واجهة الدوس
الإدخال لبرامج الدوس تكون عن طريق الدالة الرئيسية
main
*************************************************
مجموعة مواضيع - إحتراف البرمجة -
ّ~~~~~~~~~~~~~~~~~~~~~~
البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة
آخر المواضيع :
أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات
ثغرة SMS لأجهزة الجوال Siemens 3568i !
أخطاء وثغرات البرامج العربية !!!
سلسلة مواضيع - أمن وحماية مواقع الويب -
E البرمجة المتقدمة X للملفات التنفيذية E
سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة
**************************************************
<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>
**************************************************
الخطاء في الكود على ما اعتقد انك نسيت تضمين ملف الهدر الخاص بالسلاسل
النصية (string)
وعليك كتابة
#include <stdio.h>
#include <conio.h>
#include<string.h>//نسيت كتابتها
void main()
{
char pass[10];
do{
printf("Enter The passWord");
scanf("%s",pass);
}while(strcmp(pass,"god")!=0);
}عموما انا ما جربت البرنامج لكن اعتقد ان المشكلة كانت في النقطة هذي والله اعلم[/B]
اخي jaas
اسعدني ردك واطرائك وان شاء الله كل الملاحظات الي تفضلت بذكرها راح تكون حلقة بأذني
اقتباسفي شيء ثانيالدورات
دائما لا تستخدم أي دالة للمستخدم داخل دورة في مثالك
printf
انت تقول لا تستخدم الدالة printf فماذا استخدم اذا كنت اريد من المستخدم معلومة هو الي يعطيها
هل استخدم الدالة gets ?
ويعطيك الف عافية لكن المشكلة كما تفضل الاخ a_g9999
كنت ناسي احط #include<string.h
مشكور اخوي a_g9999
وتعبتكم معاي بأسألتي
تم تعديل هذه المشاركة بواسطة M3az في 31 يوليو 2004 في 13:36
مرحبا
قصدي الا تضيف دوال الإضهار للمستخدم داخل دورة أو حلقة
لأنة قد يحدث خطأ في الدورة ويستمر البرنامج في طباعة الجملة مئات المرات
وهذا غير مستحسن
المهم
لكل كود أكثر من طريقة وهذا يعتمد على المبرمج نفسة
فمثلا
هذا مثال لبرنامجك
#include <stdio.h>
#include <string.h>
int main(void)
{
char pass[10];
start:
printf("Enter password : ");
scanf("%10s",pass);
if(strcmp(pass,"god")!=0)
{
printf("Error in password\n");
goto start;
}
printf("thank you (start the main program..)\n");
printf("......................\n");
return 0;
}ولكن المثال السابق قد تكون فية بعض الأخطاء
فدائما عندما تحاول كتابة برنامج حط في رأسك كل الإحتمالات المتوقعة والغير متوقعة
في كل ألأمثلة حددنا كلمة السر بعشرة أحرف ماذا لو كتب المستخدم مئة حرف
أو ألف حرف أو أي إحتمال آخر
هذا الكود عملي أكثر
#include <stdio.h>
#include <string.h>
int main(void)
{
char* pass=NULL;
char ch;
int ii;
start:
ii=0;
printf("Enter password : ");
do{
ch=getchar();
ii++;
}while(ch!='\n');
pass=new char[ii];
memset(pass,0,ii);
memcpy(pass,stdin->_base,ii-1);
if(strcmp(pass,"god")){
printf("Error in password\n");
delete[] pass;
goto start;
}
printf("thank you (start the main program...)\n");
printf("......................\n");
delete[] pass;
return 0;
}ولو راجعت فإنك تستطيع تطويرة أكثر
لانة لا يعتبر نهائي
وشكرا
*************************************************
مجموعة مواضيع - إحتراف البرمجة -
ّ~~~~~~~~~~~~~~~~~~~~~~
البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة
آخر المواضيع :
أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات
ثغرة SMS لأجهزة الجوال Siemens 3568i !
أخطاء وثغرات البرامج العربية !!!
سلسلة مواضيع - أمن وحماية مواقع الويب -
E البرمجة المتقدمة X للملفات التنفيذية E
سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة
**************************************************
<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>
**************************************************
هذا الموضوع مغلق.