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

مشكلة manipulation d'une liste chainée de caractères

مغلقمُجاب
بدأه hicham@com في 18 أبريل 2014 · 5 رد · 677 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي قائمة من char التالية اريد اضافة maillon en entête

لكني يطلعلي مشكل خاص بـ chaine de caractère 

#include<stdio.h>
#include<stdlib.h>

typedef struct Eleves
{
	char num[10];
	char nom[30];
	char prenom[30];
	struct Eleves*suivant;
}E;
E*tete=NULL;
//Fonction Ajout en tête:
E*Ajout_tete(E*tete,char N[10],char Nom[30],char Prenom[30])
{
	E*nouveau=(E*)malloc(sizeof(E));
	nouveau->num=N;
	nouveau->nom=Nom;
	nouveau->prenom=Prenom;
	nouveau->suivant=tete;
	tete=nouveau;
	return tete;
}

main()
{
	
	E*tete;
	char N[10],Nom[30],Prenom[30];
	tete=Ajout_tete(tete,N,Nom,Prenom);
	
return 0;
system("pause");	
}
#2
اقتباس

 

E*Ajout_tete(E*tete,char N[10],char Nom[30],char Prenom[30])

 

أنت لم تقم بتعريف المتغير N   لا بد أنك كنت تقصد num بدل N

#3

عرفته في main كنت مستعمله نفس اسماء المتغيرات في structure لما عملي المشكله غيرتها سارجعها و احاول من جديد

#4

نفس المشكله دايمن يجي عند nouveau->num=num; و يقلي * incompatible types when assigning to type 'char' from type char

#5 أفضل إجابة

و عليكم السلام و رحمة الله و بركاته

قبل كل شيء طريقة تعريفك للبنية غير صحيحة و يجب ان تكون هكذا

typedef struct Eleves
{
	char *num;
	char *nom;
	char *prenom;
	struct Eleves*suivant;
}E;

لا تقم بتعريف السلاسل الحرفية على انها جداول ثابة و انما مؤشرات نحو حرف

 

ثم اولا لا يمكنك فعل هذا 

E*Ajout_tete(E*tete,char N[10],char Nom[30],char Prenom[30])

فطريقة ارسالك للتوابع خاطئة فالجداول لا تبعث بهذه الطريقة و انما على شكل مؤشرات هكذا

E*Ajout_tete(E*tete,char *N,char *Nom,char *Prenom)

ثانيا انت لم تقم بملئ جداولك بمحتواها فكيف تريد ان تسند قيمة غير معروفة الى متغير اخر...اولا عليك بقراءة ما تريد ادخاله ثم ارسله كتابع للدالة ثم اسند القيم

و ثالثا الكود الخاص بك يقوم بانشاء عنصر واحد فقط من القائمة

اليك الكود بعد تعديله قليلا

#include<stdio.h>
#include<stdlib.h>

typedef struct Eleves
{
	char *num;
	char *nom;
	char *prenom;
	struct Eleves*suivant;
}E;
E*tete=NULL;
//Fonction Ajout en tête:
E*Ajout_tete(E*tete,char *N,char *Nom,char *Prenom)
{
	E *nouveau;
	nouveau=(E*)malloc(sizeof(E));
	nouveau->num=N;
	nouveau->nom=Nom;
	nouveau->prenom=Prenom;
	nouveau->suivant=tete;
	tete=nouveau;
	return tete;
}

main()
{

	E*tete;
	char N[10],Nom[30],Prenom[30];
	scanf("%s",&N);
	scanf("%s",&Nom);
	scanf("%s",&Prenom);
	tete=Ajout_tete(tete,N,Nom,Prenom);
	printf("tete = %s %s %s",tete->num,tete->nom,tete->prenom);

return 0;
system("pause");
}

ارجو ان يفيدك اخي الكريم 

موفق

1

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#6

تمام فهمت يعني المشكل كان بتعريف chaine de caractère لاني لما اشتغل على اعداد ما عملي مشكله 

بارك الله فيكم شكرا 

اذا ممكن محتاجه هيك تمارين بتكون مصححه حتى اتمرن اكثر قبل الامتحان بخصوص les listes et les piles et files

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

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