الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اليكم هذا السؤال ، أرجو من الجميع قرائته والمحاولة في حليه حل صحيح؟

مغلق
بدأه Waleedco في 24 أبريل 2002 · 5 رد · 392 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السؤال يطلب منك كتابة دالة تقوم بنفس عمل الدالة strstr المبنية في المف string.h ويكون تعريف الدالة مبتدأ بـ

int strsearch(const char * string, const char * pattern)

بحيث يتم البحث عن الباترن في السترينغ وتفوم الدالة باعادة موضع الحرف الاو الذي تم ايجاد الباترن عنده في السترنغ + 1

او ارجاع الرقم 0

المشكلة التي واحهتني في استخدام البارامترن على انهما مصفوفتان.

ولكنني حللت تلك المشكلة كالتلي

int strsearch(char string[], char pattern[]) X

الاكس الاخيرة من اجل ظهور الجملة بالشكل الصحيح.

الرجاء المساعدة

.

#2

ملحوظة الحل مطلوب بلغة السي (c language) ولي ب++ ،

وشكرا جزيلا

اتمنى ممن لديه اي فكرة يساعدني .

#3

أخي أعتقد ان هذا هو المطلوب :

 
#include 
#include 
#include 

char *search_str(const char *str, const char *s ) ;

int main()
{
	char *str = "hi this is a string" ;
	char *s = "ta" ;
	char *ret ;

	ret  = (char *) malloc(sizeof(char));   /* To give the string a value */

	ret = search_str(str, "tr");

	printf("%snn",ret);

	return 0;

}

char *search_str(const char *str, const char *s ) 
{
	char *ret, *temp;
	int i, n, j;

	ret  = (char *) malloc(sizeof(char));   /* To give the string a value */

	temp = str ;

	n = strlen(s);
	i = strlen(str);


	for( j = 0 ; j < i ; j++ )
	{
		if( strncmp(temp, s, n) == 0 )
		{
			ret = temp ;
			return ret ;
		}
		temp  += 1 ;
	}
// if sub sting not found >>>
	return NULL;
}

مع تحياتي ,,,

#4

سلام ...

اخي طلال قرأت الدالة في عجل و على ما يبدوا انها تعمل، ولكن فيه خطأ خطير وهو انها تسبب تسرب للذاكرة memory leak، لأنك لم تقوم بعمل free للمتغير ret .

و الغريب انك لا تحتاج اصلا لحجز ذاكرة، فالمتغير ret مؤشر لبداية السلسة المشابهة ل s في temp فما هي الحاجة لحجز الذاكرة !

و هذا الكلام ينطبق على المتغير ret في main .

#5

يا اخي الكريم الكلام حقك صحيح لكنك لم تقرأ سؤالي صح فالدالة يجب ان تعيد 0 او موقع الباترن في السترينغ.

#6

اخي الكريم Developer .NET :

كلامك صحيح 100% و لكن الكود كتبته على عجالة جدا

و كنت أكلم وقتها أحد الزملاء في الماسنجر :D

أخي Waleedco :

أنت قلت مثل الدالة strstr وهذه الدالة تقوم بعمل مثل الدالة strstr

بالنسبة لكلامك هذا أسهل كثير ممكن تشوف الفكرة و بدل ما تعيد

مؤشر من نوع char أعد الاندكس فقط :) يمكنك ان تعمل هذا صح ؟

مع تحياتي ,,,

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…