Analyser un code c

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 .
Configuration: Linux / Firefox 3.5.7

3 réponses

  1. Salut, il faut initialiser ta variable i ( i =0) et déclarer et initialiser ta variable n
    par exemple int n =10;
    0
    1. mon probleme est au niveau de scanf le initialisation de compteur n'est pas important car mon but est de detécter le boucle for quelque soit leur emplacement c-à-d espace puis for ou pas d'epace .
      0
  2. 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
    0
    1. Contributeur
      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
      0