remettre une chaine de caractere à vide???

remettre une chaine de caractere à vide??? - C - Programmation

Marsh Posté le 13-06-2004 à 20:02:12    

bonjour à tous, je voudrais savoir comment faire pour remettre ma chaine de caractère à vide car je me sert de strncpy dans une boucle et il me reste des caractères dans ma chaine

Reply

Marsh Posté le 13-06-2004 à 20:02:12   

Reply

Marsh Posté le 13-06-2004 à 20:03:24    

chaine[0] = '\0';
 
mais je crois que ton problème est pas là
 
tu peux montrer rapidement et simple ta boucle

Reply

Marsh Posté le 13-06-2004 à 20:52:59    

while(!feof(fic))
  {
            fgets(adre, 200, fic);
            a=strlen(adre)-1;
           
            strncpy(autre, adre, a);
             
            //fprintf(stdout, "%s\n", autre);
            getch();
   Ajout_Deb(Premier, autre);
 
     }
         fclose(fic);
 
voila en gros le code, la fonction ah=jout_deb ajoute autre dans la liste chainee  Premier.

Reply

Marsh Posté le 13-06-2004 à 20:55:27    

si ma chaine de la boucle N fait 10 caracteres et celle de la boucle N+1 en fait 8, ma chaine de N+1 aura les 2 derniers caracteres de la boucle N. C'est peut etre pas trop clair tout ca.

Reply

Marsh Posté le 13-06-2004 à 21:03:58    

toutes façons ici tu n'as pas besoin de strncpy
du moins on ne l'utilise pas comme ça

Reply

Marsh Posté le 13-06-2004 à 21:10:46    

je viens d'ajouter une boucle for qui remet ma chaine à '\0' donc le probleme ne se trouve plus la, maintenant en faisant le strncpy avec la dernière ligne de mon fichier fic, il me manque le dernier caractère.

Reply

Marsh Posté le 13-06-2004 à 21:12:27    

si tu as une meilleur solution je suis pres a t'ecouter(ou te lire plutot).
en fait je dois prendre la premiere ligne de mon fichier fic et l'envoyer dans Ajout_Deb.

Reply

Marsh Posté le 13-06-2004 à 21:23:34    

déjà écris
 
while(fgets(buffer, sizeof buffer, fichier) != NULL)
 
n'utilise jamais feof qui ne fait pas ce que tu penses
 
 
            a=strlen(adre)-1;
           
            strncpy(autre, adre, a);  
 
pourquoi ne pas utilisé directement adre ?
 
je comprends pas trop ton problème en fait

Reply

Marsh Posté le 13-06-2004 à 21:33:17    

voila, je viens de changer, voici mon code:
 
while(fgets(adre, sizeof(adre), fic) != NULL)
  {
 
            fprintf(stdout, "%s\n", adre);
            getch();
     Ajout_Deb(Premier, adre);
             
     }
         fclose(fic);
 
 
mais en faisant ca, il prend en compte le retour a la ligne(\n) que j'ai dans mon fichier et donc il m'affiche avec une ligne sur 2.
 
mon fichier est celui-ci:
c:\file1.txt
c:\file2.txt
 
et il m'affiche donc
c:\file1.txt
 
c:\file2.txt

Reply

Marsh Posté le 13-06-2004 à 21:44:37    

tu rajoutes
 
char *eol = strchr(adre, '\n');
if(eol /* trouvé */) *eol = '\0'; /* on tronque */

Reply

Marsh Posté le 13-06-2004 à 21:44:37   

Reply

Marsh Posté le 13-06-2004 à 21:49:46    

un très grand merci à toi, ca marche impeccable.
je vais pouvoir continuer mon projet.
merci encore

Reply

Marsh Posté le 13-06-2004 à 21:50:28    

strchr qui est définit de manière standard dans <string.h>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed