probleme de texte

probleme de texte - C++ - Programmation

Marsh Posté le 10-05-2003 à 00:07:35    

Suite et fin des aventures graces a l'aide de certaines personnes que je remercie beaucoup je suis arrivé non sans mal a un prog
pas trop mal. Le resultat est mitigé puisque il m'ecrit bien ce que je veux mais aussi des caracteres bizarres qui n'on rien a faire la  
le resultat est le suivant :  
 
nom,x? popo,? prenom, hophop, w, variable.html, , a+, %s ,l>, , U?å?ìº@@,ml, èJ,ml>  
 
Apres avoir cherché sur fopen le mode binaire et texte etc...
et fprintf different format ca na rien donné  
voici le prog :
 

Code :
  1. #include <stdio.h>
  2.    #include <stdlib.h>
  3.    #include <string.h>
  4.    
  5.    
  6.    
  7.    
  8.     char *str = "truc.cgi?nom=popo&prenom=hophop"; 
  9.     FILE * fichier;
  10.     int j=1;
  11.     char *valeurs;
  12.     char *variables;
  13.    
  14.     int main ()   
  15.     {
  16.     /* ouverture du fichier html */ 
  17.     fichier = fopen("variable.html", "w+" );
  18.    
  19.     /* Ecriture des données dans le fichier */ 
  20.     fprintf(fichier, "<html>" );
  21.    
  22.    
  23.    
  24.     /*on pointe sur '?' et on avance d'un cran*/ 
  25.          str = strchr( str, '?' );
  26.          str++;   
  27.        
  28.     /*c parti on boucle*/ 
  29.          while (*str) 
  30.             { 
  31.                    char *tmp = str; 
  32.                    int size; 
  33.                    char *token; 
  34.                    
  35.              /* ca boucle jusqu'a temps de tomber sur le caractere '=' ou '&' ou la fin de   
  36.               chaine*/
  37.                    while (*tmp && (*tmp != '=') && (*tmp != '&')) 
  38.                    tmp++; 
  39.                    
  40.                    size = (int)(tmp - str);
  41.                    token = (char*)malloc((size + 1) * sizeof (char));
  42.                    memcpy(token, str, size);
  43.                    token[size] = '\0';
  44.                    
  45.                
  46.                 if ( j%2 )  { 
  47.                        
  48.                        variables=malloc(strlen(token)+1);
  49.                        strcpy(variables, token) ;
  50.                        variables[size] = ',';
  51.                        fichier = fopen("variable.html", "a+" );
  52.                        fprintf(fichier, "%s\n", variables);
  53.                        fclose(fichier);
  54.                        free (variables);
  55.                    }
  56.                
  57.                 else
  58.                        valeurs=malloc(strlen(token)+1);
  59.                        strcpy(valeurs, token) ;
  60.                        valeurs[size] = ',';
  61.                        fichier = fopen("variable.html", "a+" );
  62.                        fprintf(fichier, "%s\n", valeurs);
  63.                        fclose(fichier);
  64.                        free (valeurs);
  65.                      }
  66.                 j++;
  67.                 str += size + 1;
  68.                 free (token);
  69.             }
  70.        
  71.          
  72.     fichier = fopen("variable.html", "a+" );
  73.     fprintf(fichier, "</html>" );
  74.     fclose(fichier);
  75.        
  76.        
  77.     }


Message édité par warmastercs le 10-05-2003 à 00:55:53

---------------
un sabre est une arme. le kenjutsu, une technique de mort. Peu importent les bonnes intentions, c'est la seul vérité. On tue pour protéger. On tue pour que d'autres vivent. C'est ca, la vérité du sabre.
Reply

Marsh Posté le 10-05-2003 à 00:07:35   

Reply

Marsh Posté le 10-05-2003 à 01:16:53    

Code :
  1. #include <stdio.h>
  2.      #include <stdlib.h>
  3.      #include <string.h>
  4.      
  5.      
  6.      
  7.      
  8.       char *str = "truc.cgi?nom=popo&prenom=hophop\0";
  9.       FILE * fichier;
  10.       int j=1;
  11.       char *valeurs;
  12.       char *variables;
  13.      
  14.       int main ()   
  15.       {
  16.         /* ouverture du fichier html */ 
  17.         fichier = fopen("variable.txt", "w+" );
  18.        
  19.         /* Ecriture des données dans le fichier */ 
  20.         fprintf(fichier, "<html>" );
  21.        
  22.        
  23.        
  24.         /*on pointe sur '?' et on avance d'un cran*/   
  25.              str = strchr( str, '?' );
  26.              str++;     
  27.             char *tmp;
  28.             int size;
  29.             char *token;
  30.         /*c parti on boucle*/   
  31.              while (*str) 
  32.                 { 
  33.                          tmp = str; 
  34.                        
  35.                          
  36.                    /* ca boucle jusqu'a temps de tomber sur le caractere '=' ou '&' ou la fin de   
  37.                     chaine*/
  38.                          while (*tmp && (*tmp != '=') && (*tmp != '&')) 
  39.                          tmp++; 
  40.                          
  41.                          size = (int)(tmp - str);
  42.                          size++;
  43.                          token = malloc((size + 1) * sizeof (char));
  44.                          memcpy(token, str, size);
  45.                          token[size] = '\0';
  46.                          
  47.                      
  48.                       if ( j%2 )  { 
  49.                                
  50.                                variables=malloc(strlen(token)+2);
  51.                                strcpy(variables, token) ;
  52.                                variables[size-1] = ',';
  53.                                variables[size] = '\0';
  54.                                fichier = fopen("variable.html", "a+" );
  55.                                fprintf(fichier, "%s\n", variables);
  56.                                fclose(fichier);
  57.                                free (variables);
  58.                          }
  59.                      
  60.                       else
  61.                                valeurs=malloc(strlen(token)+2);
  62.                                strcpy(valeurs, token) ;
  63.                                valeurs[size-1] = ',';
  64.                                valeurs[size] = '\0';
  65.                                fichier = fopen("variable.html", "a+" );
  66.                                fprintf(fichier, "%s\n", valeurs);
  67.                                fclose(fichier);
  68.                                free (valeurs);
  69.                            }
  70.                       j++;
  71.                       str += size;
  72.                       free (token);
  73.                 }
  74.            
  75.              
  76.         fichier = fopen("variable.html", "a+" );
  77.         fprintf(fichier, "</html>" );
  78.         fclose(fichier);
  79.            
  80.       }

 
 
ça doit être un truc comme ça que tu veux non ?
 
j'ai enlevé 2, 3 horreurs (en fait surtout les variables déclarées x fois dans la boucle :/ )
 
et tjrs penser à fermer ses chaines de caractères
 
ya moyen de faire + propre je pense, mais bon faudrait tt reprendre [:ddr555]
 
A+


Message édité par Babouchka le 10-05-2003 à 01:20:08
Reply

Marsh Posté le 10-05-2003 à 01:24:23    

merci . j voudrais savoir ca existe un debugger pour le languace C qui permet de voir pas a pas ce qui ce passe pour trouvé les erreur plus facilement ? du style quand il arrive sur la creation d un fichier . il t ouvre une fenetre avec ce fichier et tu vois pas a pas ce qu'il ecrit dedans suivant ton program par exemple ?


---------------
un sabre est une arme. le kenjutsu, une technique de mort. Peu importent les bonnes intentions, c'est la seul vérité. On tue pour protéger. On tue pour que d'autres vivent. C'est ca, la vérité du sabre.
Reply

Marsh Posté le 10-05-2003 à 01:28:59    

WarmasterCS a écrit :

merci . j voudrais savoir ca existe un debugger pour le languace C qui permet de voir pas a pas ce qui ce passe pour trouvé les erreur plus facilement ? du style quand il arrive sur la creation d un fichier . il t ouvre une fenetre avec ce fichier et tu vois pas a pas ce qu'il ecrit dedans suivant ton program par exemple ?


 
ben soit tu fais des affichages dans la console de chaque truc que tu mets dans ton fichier
 
soit tu tentes le debugger de devc++/visual studio (mais pour un prog aussi petit que le tiens, je pense que c'est pas très utile, vaut mieux debugger avec des affichages)
 
A+

Reply

Sujets relatifs:

Leave a Replay

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