• 0
hicham@com

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

سؤال

لدي قائمة من 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");	}
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

5 إجابة على هذا السؤال .

  • 0

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

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

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

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

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

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .