Bonjour,
J'ai developpé une petite fonction qui effectue effectue une saisie dans une variable. Celle-ci ne doit pas faire plus de 20 caractères.
Mais je voudrais que ma fonction retourne le résultat de la saisie dans une variable buf qui serait le premier argument, et qu'elle retourne 0 si la variable compte moins de 20 caractères ou 1 si celle-ci a due être tronquée.
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 char* saisie(){ char* buf; char* c; c=(char*)malloc(1*sizeof(char)); int i=0; while(fgets(c,2,stdin)){ if(strncmp(c,"\n",1)==0) break; buf=(char*)realloc(buf,(i+1)*sizeof(char)); if(i==0) strcpy(buf,c); else strcat(buf,c); i++; } if(i<21){ buf=(char*)realloc(buf,(i+1)*sizeof(char)); buf[i]='\0'; return buf; }else{ free(buf); return "\0"; } }
Et l'appeler ainsi :
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 int saisie(char* buf){ char* c; c=(char*)malloc(1*sizeof(char)); int i=0; while(fgets(c,2,stdin)){ if(strncmp(c,"\n",1)==0) break; buf=(char*)realloc(buf,(i+1)*sizeof(char)); if(i==0) strcpy(buf,c); else strcat(buf,c); i++; } if(i<21){ buf=(char*)realloc(buf,(i+1)*sizeof(char)); buf[i]='\0'; return 0; }else{ buf=(char*)realloc(buf,21*sizeof(char)); buf[20]='\0'; return 1; } }
Mais cela ne fonctionne pas. Je crois qu'il faudrait que je passe en argument un pointeur sur l'adresse de buf ... mais j'ai du mal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int main(void){ char* buf=NULL; int err; err=saisie(buf); }
Partager