paranoidandroid | Mais comment que c'est casse couille les pointeurs .. franchement je comprends que dalle, je reste une éternité sur une pauvre portion de code. Je les utilise et je sais m^^eme pas ce que ça représente ...
Comment peut t on savoir où se trouve un erreur de type mémoire .. Quand je débugue, j'ai un truc du genre , User BReakpoint called from code at 0x77f etc ... ça représente quoi par rapport a mon code ???
Code :
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define RESULT_FILE "result.txt"
- #define LINERETURN "\n"
- #define SIZETAB 2000
- #define MAXCHAR 100
- #define BATFILE "greptab.bat"
- #define CPY_TO_FILE " >> "
- char *tables[SIZETAB];
- char input_f[100];
- char path[100];
- char *bat;
- /* declaration des fonctions */
- void launch_bat();
- void help(void);
- void writefile(char *mot);
- char *insert(char *table);
- int del_fichier_res(char *fileres);
- int del_bat_file(void);
- void fAnalyse(char *fileres);
- /*Fonction qui scanne le fichier contenant la liste des chaines a rechercher dans les sources*/
- void fRun(char *fichier)
- {
- FILE *fic;
- FILE *sortie;
- char temp[32];
- char *cmd;
- char *retour;
- char *fileres;
- int j;
- int i=0;
- char *tables_res;
- char *info;
- //formation de la chaine pour le chemin du fichier resultat
- fileres = malloc((strlen(RESULT_FILE)+strlen(path))*sizeof(c
- har));
- sprintf(fileres,"%s%s",path,RESULT_FILE);
- retour=malloc(strlen(CPY_TO_FILE)*sizeof(char));
- strcpy(retour,CPY_TO_FILE);
- info=malloc(strlen("echo " )*sizeof(char));
- strcpy(info,"echo " );
- fic = fopen(fichier,"r" );
- if(fic != NULL)
- {
- // system("md result" );
- do
- {
- fscanf(fic, "%s", temp);
- tables[i]=malloc(strlen(temp)*sizeof(char));
- strcpy(tables[i],temp);
- i++;
- }
- while(!feof(fic));
- //Pour se situer reelement a la derniere ligne
- i--;
- fclose(fic);
- bat = malloc((strlen(path)+strlen(BATFILE))*sizeof(char)
- );
- sprintf(bat,"%s%s",path,BATFILE);
- printf("effacement du fichier bat %s\n",bat);
- if(del_bat_file()==0)
- {
- printf("le fichier bat %s a ete efface\n",bat);
- }
- else
- {
- printf("pas de fichier bat %s trouve\n",bat);
- }
- printf("effacement du fichier resultat %s\n",fileres);
- if(del_fichier_res(fileres)==0) printf("le fichier resultat %s a ete efface\n",fileres);
- else printf("pas de fichier resultat %s trouve\n",fileres);
- sortie = fopen(bat,"a" );
- if(sortie != NULL)
- {
- for(j=0;j<i;j++)
- {
- cmd = malloc(strlen(tables[j])*sizeof(char));
- strcpy(cmd,insert(tables[j]));
- tables_res = malloc((strlen(info)+strlen(tables[j])+strlen(file
- res)+strlen(retour)+strlen(LINERETURN))*sizeof(cha
- r));
- sprintf(tables_res,"%s%s%s%s%s",info,tables[
- j],retour,fileres,LINERETURN);
- fputs(tables_res, sortie);
- fputs(cmd, sortie);
- }
- fclose(sortie);
- }
- launch_bat(bat);
- // fAnalyse(fileres,i);
- }
- else printf("le fichier %s n'a pas pu etre ouvert\n\n",input_f);
- }
- int del_bat_file(void)
- {
- char *command;
- char delcom[5];
- strcpy(delcom,"del " );
- command = malloc((strlen(delcom)+strlen(bat))*sizeof(char));
- sprintf(command,"%s%s",delcom,bat);
- if (system(command) == 0)
- {
- return(0);
- }
- else
- {
- return(-1);
- }
- }
- void launch_bat(void)
- {
- FILE *batfile;
- batfile = fopen(bat,"r" );
- if (batfile == NULL)
- {
- printf ("le fichier %s contenant les commandes à executer n'a pas pu être trouvé\n",BATFILE);
- }
- else
- {
- system(bat);
- }
- }
- char *insert(char *table)
- {
- char *cmdd;
- char *cmdf;
- char *cmd;
- char *separateur = "/";
- char *lResultFileName;
- char *searchdir;
- char *filename;
- lResultFileName = malloc(strlen(RESULT_FILE)*sizeof(char));
- strcpy(lResultFileName,RESULT_FILE);
- filename = malloc((strlen(path)+strlen(lResultFileName))*size
- of(char));
- sprintf(filename,"%s%s",path,lResultFileName);
- cmdd=malloc(strlen("grep -i -c -d " )*sizeof(char));
- cmdf=malloc(strlen(" >> " )*sizeof(char));
- strcpy(cmdd,"grep -i -c -d " );
- strcpy(cmdf," >> " );
- searchdir = malloc((strlen(path)+strlen("*.*" ))*sizeof(char));
- sprintf(searchdir,"%s%s%s"," ",path,"*.*" );
- cmd = malloc((strlen(cmdd)+strlen(table)+strlen(searchdi
- r)+strlen(cmdf)+strlen(filename)+strlen(LINERETURN
- ))*sizeof(char));
- sprintf(cmd,"%s%s%s%s%s%s",cmdd,table,searchdir
- ,cmdf,filename,LINERETURN);
- // free(lResultFileName);
- // free(filename);
- // free(searchdir);
- return(cmd);
- }
- int del_fichier_res(char *fileres)
- {
- char *command;
- char delcom[6];
- strcpy(delcom,"del " );
- command = malloc((strlen(delcom)+strlen(path))*sizeof(char))
- ;
- sprintf(command,"%s%s",delcom,fileres);
- if (system(command) == 0) return(0);
- else return(-1);
- }
- void main(int argc, char *argv[])
- {
- argc = 3;
- argv[1]="C:\\wrkcesar\\database\\list.txt
- ";
- argv[2]="C:\\wrkcesar\\database\\";
- if (argc != 3) help();
- else
- {
- strcpy(input_f,argv[1]);
- strcpy(path,argv[2]);
- fRun(argv[1]);
- }
- }
- void help(void)
- {
- printf("Correct syntax is :\n\tgreper <list.file> <search.path>" );
- exit(0);
- }
|
C'est surement très laid, c'est premier exe en C.
Est ce que vous pourriez juste me taper deux trois chtites remarques comme les erreurs a pas faire, les trucs que j'ai fais etc ..
Ce code est censé greper des mots ( qui sont contenues dans un fichier ) dans un répertoire et ses sous repertoires .. et de mettre le résultat dans un fichier resultat.txt
D'abord je tente de lire ma liste de mots pour construire un .bat qui éxécuté va remplir mon fichier resultat.txt
Je m'en sors pas du tout ..
Merci Message édité par paranoidandroid le 18-06-2002 à 15:59:40
|