Analyser un code c

Fermé
info - 15 mars 2010 à 09:22
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 15 mars 2010 à 17:25
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 lundi 3 mars 2008 Statut Membre Dernière intervention 15 avril 2010 76
15 mars 2010 à 11:00
Salut, il faut initialiser ta variable i ( i =0) et déclarer et initialiser ta variable n
par exemple int n =10;
0
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 vendredi 20 novembre 2009 Statut Membre Dernière intervention 28 novembre 2013 33
15 mars 2010 à 15:49
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
15 mars 2010 à 17:25
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