Nombre de ligne métode non bourrine (C)
Résolu
cap'tain sheeps
-
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 -
Salut,
Je cherche à compter le nombre de ligne d'un fichier jusqu'à ce que l'on atteint "ELEMENT DE BASE" (écris dans ce fichier à 7 caractères du début de la ligne).
J'ai fais de cette façon mais je me demandais si il n'y avait pas une manière plus "fine" et propre. (je parle du else if caractère par caractère, la j'ai réduis le programme mais sinon je ferme mon fichier et tout et tout vous inquiétez pas )
Merci d'avance !
Sheeps.
Je cherche à compter le nombre de ligne d'un fichier jusqu'à ce que l'on atteint "ELEMENT DE BASE" (écris dans ce fichier à 7 caractères du début de la ligne).
J'ai fais de cette façon mais je me demandais si il n'y avait pas une manière plus "fine" et propre. (je parle du else if caractère par caractère, la j'ai réduis le programme mais sinon je ferme mon fichier et tout et tout vous inquiétez pas )
#include <stdlib.h> #include <stdio.h> #include <string.h> #define TAILLE_MAX 1000 int main(int argc, char *argv[]) { FILE* fichier = fopen("exemple.PRF", "r"); char carac; char string[TAILLE_MAX]; int i; int ligne = 0; for (i = 0; i<7; i++) { fgetc (fichier); } for (i = 0; i<200; i++) { carac = fgetc (fichier); if (carac != 'E') { fgets(string,TAILLE_MAX,fichier); ligne++; } else if ((carac = fgetc (fichier)) != 'L') { fgets(string,TAILLE_MAX,fichier); ligne++; } else if ((carac = fgetc (fichier)) != 'E') { fgets(string,TAILLE_MAX,fichier); ligne++; } else if ((carac = fgetc (fichier)) != 'M') { fgets(string,TAILLE_MAX,fichier); ligne++; } else if ((carac = fgetc (fichier)) != 'E') { fgets(string,TAILLE_MAX,fichier); ligne++; } else if ((carac = fgetc (fichier)) != 'N') { fgets(string,TAILLE_MAX,fichier); ligne++; } else { printf("nb ligne : %d",ligne); return 0; } } return 0; }
Merci d'avance !
Sheeps.
A voir également:
- Nombre de ligne métode non bourrine (C)
- Partage de photos en ligne - Guide
- Nombre de jours entre deux dates excel - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Formulaire en ligne de meta - Guide
3 réponses
Bonjour,
Oui, il y a beaucoup plus fin ^^.
Par exemple :
J'ai pas vérifié, il y a sûrement des erreurs. A toi de voir pour la taille maximum des lignes. S'il n'y a pas de maximum, il faudra faire un petit while(fgetc) jusqu'à la fin de ligne.
Cdlt,
Oui, il y a beaucoup plus fin ^^.
Par exemple :
#define MAX 512 int main (void) { FILE *fp=fopen(...); int ligne=0; int trouve=0; char buffer[MAX]; while(fgets(buffer, sizeof buffer, fp)) { ligne++; if(strstr(buffer,ELEMENT DE BASE)) { trouve=1; break; } } if(trouve) printf("%d\n", ligne); fclose(fp), fp=NULL; return 0; }
J'ai pas vérifié, il y a sûrement des erreurs. A toi de voir pour la taille maximum des lignes. S'il n'y a pas de maximum, il faudra faire un petit while(fgetc) jusqu'à la fin de ligne.
Cdlt,
Merci bien!
Mmmmhhh bisarre trouve est toujours à 0...
enfin je me suis permis de mettre des guillemets pour "ELEMENT DE BASE", vu que sinon il me disait:
'ELEMENT' undeclared
mais bon je connais pas la fonction strstr. Une idée?
Mmmmhhh bisarre trouve est toujours à 0...
enfin je me suis permis de mettre des guillemets pour "ELEMENT DE BASE", vu que sinon il me disait:
'ELEMENT' undeclared
mais bon je connais pas la fonction strstr. Une idée?