Fonction de saisie qui retourne plusieurs paramètres
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.
Code:
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";
}
} |
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:
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;
}
} |
Et l'appeler ainsi :
Code:
1 2 3 4 5 6 7
|
int main(void){
char* buf=NULL;
int err;
err=saisie(buf);
} |
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.