Analyser un code c

info -  
fiddy Messages postés 11069 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 .
A voir également:

3 réponses

-Arod- Messages postés 275 Date d'inscription   Statut Membre Dernière intervention   76
 
Salut, il faut initialiser ta variable i ( i =0) et déclarer et initialiser ta variable n
par exemple int n =10;
0
info
 
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
malaik5 Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   33
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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