/* buffer = pointeur sur la chaine source. dest = pointeur sur la chaine destinatrice qui recevra la ligne. buffer_size = taille en octet de la chaine source (buffer). line = la ligne voulu. 0 EST CONSIDÉRÉ COMME LA PREMIÈRE LIGNE. La fonction ne recherche pas les 0 finals. Elle ne se fit que sur buffer_size pour être sûr de ne pas déborder sur les zones mémoire avoisinantes donc soyez sûr d'entrer la bonne taille. */ void GetLine (char *buffer, char *dest, int buffer_size, int line) { char *c = dest; // Pointeur sur la chaine destinatrice // Si la valeur de line est plus petite que 0 ou si buffer ne pointe sur rien // ou encore si buffer_size est plus petit ou égal à 0... if(line < 0 || buffer == 0 || buffer_size <= 0) return; // On quitte // On va se positionner sur la ligne voulu while(line > 0) // 0 EST CONSIDÉRÉ COMME LA PREMIERE LIGNE { while(*buffer != '\n') // On cherche les retours à la ligne { // Si on atteind la fin de la chaine if(buffer_size <= 0) return; // On quitte car la ligne n'est pas présente buffer++; buffer_size--; } // On incrémente le pointeur pour sauter le retour à la ligne trouvé buffer++; line--; buffer_size--; } // On extrait la ligne de buffer vers dest while(*buffer != '\n') // Roule jusqu'au prochain retour à la ligne { // Si entre temps, on atteind la fin de la chaine, on arrete l'extraction ici if(buffer_size <= 0) break; *c = *buffer; c++; buffer++; buffer_size--; } /* Vue qu'il s'agit ici d'une chaine de caractère, on ajoute un 0 final. SOYEZ SUR QU'IL Y AI ASSEZ DE MEMOIRE POUR LA CHAINE DESTINATRICE!!! Évidament, si on ne veut pas de 0 final, il faudra créé une variable qui sera incrémenté à chaque ajoue de caractère dans dest et retourné à la fin de la fonction. Savoir le nombre de valeur écrite dans un tampon est essentiel pour éviter les débordements tampon potentiel ! */ *c = 0; }
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.