Analyser un code c
info
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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 .
#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:
- Analyser un code c
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
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;
par exemple int n =10;
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 .
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
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