Analyser un code c
info
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, j'ai un code c qui fait un analyse d'un fichier et de détecté l'instruction suivante " for(....." pour inserer apres le for un directive d'autre l'angage 'openmp ' et voila le code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main(int argc,char** argv)
{ char mot1[4]="";
char mot[255];//mot va contenir le mot a comparer
FILE* origine;FILE* copie;//deux pointeurs sur les fichier utilisés
/*origine:pointeur sur le fichier à analyser*/
origine = fopen("origine.c", "r");
if(origine!=NULL)//si le fichier à analyser existe
{
copie= fopen("copie.c","w");//creer le fichier copie en ecriture
while(fscanf(origine,"%s",mot) != EOF)
{
if(strncmp(mot,"for",3)==0 )
fprintf(copie,"%s","\n#pragma parallel for\n");// le directive d'openmp
fprintf(copie,"%s",mot);
}
fclose(origine);fclose(copie);
}
else
{printf("fichier vide\n");exit(0);fclose(origine);}
}
mais le probléme est si je mis dans le fichier originale par exemple printf("salut");for(int i;i<n;i++)....
mon programme ne détecte pas le for et il ne fait rien .
quelle qu'un me aider et merci .
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main(int argc,char** argv)
{ char mot1[4]="";
char mot[255];//mot va contenir le mot a comparer
FILE* origine;FILE* copie;//deux pointeurs sur les fichier utilisés
/*origine:pointeur sur le fichier à analyser*/
origine = fopen("origine.c", "r");
if(origine!=NULL)//si le fichier à analyser existe
{
copie= fopen("copie.c","w");//creer le fichier copie en ecriture
while(fscanf(origine,"%s",mot) != EOF)
{
if(strncmp(mot,"for",3)==0 )
fprintf(copie,"%s","\n#pragma parallel for\n");// le directive d'openmp
fprintf(copie,"%s",mot);
}
fclose(origine);fclose(copie);
}
else
{printf("fichier vide\n");exit(0);fclose(origine);}
}
mais le probléme est si je mis dans le fichier originale par exemple printf("salut");for(int i;i<n;i++)....
mon programme ne détecte pas le for et il ne fait rien .
quelle qu'un me aider et merci .
Configuration: Linux / Firefox 3.5.7
3 réponses
-
Salut, il faut initialiser ta variable i ( i =0) et déclarer et initialiser ta variable n
par exemple int n =10; -
bonjour,
il y'a une fonction qui existe dans Java ou c# il faut juste verifié si ça existe (je sais qu'elle existe il faut conformer);
c'est la fonction IndexOf
tu procéde comme suit :
int a;
a=mot[i].indexOf("for(");
if (a==-1) { }
else { //faire ton traitement ici }
la fonction retourne -1 si la chaine "for(" n'existe pas
sinon elle te retourne la position du debut de ta chaine dans le mot
bon t'as une grande piste tu peux l'exploiter
et faire plus d'effort et nous on t'aide -
Bonjour
le prototype de main n'est pas void main mais int main. Et il renvoie 0 a la fin.
Sinon la fonction que tu devrais utiliser est strstr.
Cdlt