bonjour

voila j'ai un petit problème avec mon code et je n'arrive pas à trouver la solution adequate. j'ai beau chercher depuis quelques jours mais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
 
#include<stdio.h>
#include<string.h>
 
#define FILENAME "meibo.txt"
#define MAX_STUDENT_NUM 100
 
struct student{
int id;
char first_name[100];
char last_name[100];
char tel_number[100];
};
 
 
void read_file(char*filename, struct student*sl, int sln)
{
FILE*fp=NULL;
int i, id;
char fn[100], ln[100], tn[100];
 
if((fp= fopen("meibo.txt", "r")) == NULL)
return;
 
for(i=0;i<sln;i++){
if(fscanf(fp, &id, fn, ln, tn)<=0)
break;
sl[i].id = id;
strcpy(*char );
strcpy(*char last_name);
strcpy(*char tel_number);
}
 
fclose(fp);
}
 
 
void print_all(struct student*sl, int n)
{
int i;
for(i=0; i<n; i++){
printf("%d %s %s %s\n",
sl[i].id,
sl[i].first_name,
sl[i].last_name,
sl[i].tel_number);
}
}
 
 
void print_by_id(struct student*sl, int n, int id)
{
int i;
for(i=0; i<n; i++){
if(sl[i].id == id){
printf("%d %s %s %s\n",
sl[i].id,
sl[i].first_name,
sl[i].last_name,
sl[i].tel_number);
}
}
}
 
 
int lookup(struct student *sl, int n, int mode, char *str)
{
int id = -1, i;
int compresult = -1;
 
for(i=0; i<n; i++) {
switch(mode){
strcmp; id :
printf("mode = first_number\n");
break;
strcmp;
printf("mode = last_name\n");
break;
strcmp;
printf("mode = tel_number\n");
break;
strcmp;
printf("mode = -1\n");
default:
break;
}
if(compresult == 0){
id = sl[i].id;
break;
}
}
 
return id;
}
 
 
int main()
{
int id;
struct student studentlist[MAX_STUDENT_NUM];
 
scanf(FILENAME, &studentlist[0], MAX_STUDENT_NUM);
fprint(&studentlist[0], 3);
 
printf("\n");
 
printf("lookup foo1\n");
id = lookup(studentlist, 3, 1, "foo1");
 
if(id != -1){
printf("foo1 info:\n");
print_by_id(studentlist, MAX_STUDENT_NUM, id);
}
 
printf("\n");
 
printf("lookup bar2\n");
id= lookup(studentlist, 3, 2,"bar2");
 
if(id !=-1){
printf("bar2 info:\n");
print_by_id(studentlist, MAX_STUDENT_NUM, id);
}
 
printf("\n");
 
printf("lookup 111-1111-1111\n");
id = lookup(studentlist, 3, 3, "111-1111-1111");
 
if(id !=-1){
printf("telnum(111-1111-1111) info:\n");
print_by_id(studentlist, MAX_STUDENT_NUM, id);
 
}
}
le resultat doit me donner une liste qui au depart etait comme ceci
0 foo0 bar0 000-0000-0000
1 foo1 bar1 111-1111-1111
2 foo2 bar2 222-2222-2222

à une liste qui doit etre comme cela
lookup foo1
foo1 info:
ID: 1
FN: foo1LN: bar1
TN: 111-1111-1111

lookup bar2
bar2 info:
ID: 2
FN: foo2LN: bar2
TN: 222-2222-2222

lookup 111-1111-1111
telnum(111-1111-1111) info:
ID: 1
FN: foo1LN: bar1
TN: 111-1111-1111

merci d'avance