Lecture/Ecriture fichier (problème codage ?)

Fermé
cb - 17 mai 2008 à 18:26
 cb - 19 mai 2008 à 11:11
Bonjour,
Mon programme ouvre un fichier texte où il y a des mots stockés dans une colonne (\n entre chaque mot). Le but est de tout mettre en minuscule.
Les mots sont tous de même longueur. Lors de l'exécution du programme, celui-ci fais une sorte de boucle infinie... (je pense que l'erreur se situe au niveau du nombre de caractères/curseur)
Ces fichiers textes ont été créés avec windows et mon programme tourne sous linux (sachant que le codage des retours chariot est différent, taille 2 pour windows et taille 1 pour linux, je suis quasi sûr que mon problème viendrait de là ? Comme le résoudre ? Si je copie le contenu du fichier dans un autre fichier créé sous linux, ça tourne nickel car ça converti le codage en route... Mais c'est lourd !!!! )
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define	NbLettre 5;

int main(int argc, char *argv[])
{
	int i;
	char NomFichier[]="truc.txt",chaine[27];
	FILE* fichier = NULL;
	fichier = fopen(NomFichier, "r+");
	if (fichier == NULL)
	{
		printf("Erreur ouverture\n");
		return 0;
	}
while (fgets(chaine, NbLettre + 1, fichier) != NULL)
{
	printf("Avant : %s - ",chaine);
	for (i= 0; chaine[i] != '\0'; i++)
		if (chaine[i] >= 'A' && chaine[i] <= 'Z') // Conversion
		      chaine[i]= chaine[i] - 'A' + 'a';
	printf("après : %s\n",chaine);;
	fseek(fichier, - NbLettre, SEEK_CUR); // On se place au début de la ligne en question
	fprintf(fichier, "%s\n", chaine); // Ecriture de la chaine en minuscules
}
	fclose(fichier);
	return EXIT_SUCCESS;
}

Si quelqu'un a le temps d'y jeter un coup d'oeil rapide...
Merci d'avance
A voir également:

1 réponse

damlegone32 Messages postés 74 Date d'inscription lundi 11 septembre 2006 Statut Membre Dernière intervention 31 mai 2011 29
18 mai 2008 à 00:37
Salut,
J'ai trouvé ce lien sur CCM qui pourrait peut être t'aider si c'est bien le problème que tu penses :
Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF).

Si ca t'avance pas, peut tu me dire quel est le comportement de ton prog avec les fichier txt windows : refus de complilé, le prog plante a l'execution, la conversion n'est pas entiere (reste des majuscules), ou autres...

A+
0
Le programme compile sans erreurs ni warnings mais c'est à l'exécution que ça plante. ça mouline et lors de la lecture/écriture, les mots lus ne sont pas corrects (en affichant le mot lu, j'obtiens des "espaces"...)
Je vais tester avec la conversion et je dis quoi...

PS : Le truc étrange c'est que lorsque je copie/colle le contenu du fichier dans un autre fichier, ça tourne et ça fait ce que je veux !!!!
0