Pb de majuscule à modifier sur un fichier

Signaler
Messages postés
5
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
15 mai 2005
-
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
-
Je voudrai convertir le text de mon fichier tout en minuscule .. quelqu'un
peut m'aider ? voici le code

#include <stdio.h>
#include
<stdlib.h>
#include <string.h>
#include
<conio.h>
#include <ctype.h>



/*--------------------Ouverture d'un fichier et affichage
--------------------*/



int main ()
{
// déclaration
int i,len;
char
fichier[32];
FILE *f1=NULL;
char phrase[len];
char
tab_char[180000];
char t[32];

char
sep[]=".,;:!?\n\t\r\'"\[]\0";

// Recommence l'ouverture du fichier
tant que tu n'a pas reussi
while (f1==NULL)
{


printf ("Entrer le chemin du fichier\n");
scanf
("%s",fichier);
f1= fopen(fichier,"r");
if
(f1==NULL)
{
printf ("Erreur: Probleme
d'ouverture en lecture");
}
else

{
printf ("Ouverture reussite !! \n ");

printf ("\n");
}
}

// retirer les
majuscules



while (!feof(f1))
{
fscanf (f1,"%s",&t);
while
(t[i]!='\n')
{
fscanf (f1,"%s",&phrase);

len=strlen(phrase);
for(i=0;i<len;i++)
{
if(
('A' <= phrase[i]) && (phrase[i]<='Z') )

{
phrase[i] = 'a' + (phrase[i] - 'A');
}

}
}
}
}
fclose (f1);
getch();
return
0;

}

Vous pouvez me contacter par msn
ou par aol : [mailto:lacharlottinne@hotmail.com lacharlottinne@hotmail.com] /
lacharlottinne@aol.com

voila merci c pour un projet je suis dans la merde
..

8 réponses

Messages postés
23
Date d'inscription
dimanche 11 avril 2004
Statut
Membre
Dernière intervention
19 novembre 2019

une des plusieurs methodes possible :
char *SetFileTextToMin( FILE *File )
{
unsigned long int FileSize = 0;
char *Text = NULL;
fseek( File, 0, SEEK_END );
FileSize = ftell( File );
fseek( File, 0, SEEK_SET );
fread( Text, sizeof( char ), FileSize, File );
strcpy( Text, strlwr( Text ) );
return Text;
}
Messages postés
23
Date d'inscription
dimanche 11 avril 2004
Statut
Membre
Dernière intervention
19 novembre 2019

SetFileTextToMin te retournes tout le texte du fichier en minuscule
Messages postés
23
Date d'inscription
dimanche 11 avril 2004
Statut
Membre
Dernière intervention
19 novembre 2019

excuses moi, la fonction que je t'avais donné ne fonctionnait pas, en voila une qui fonctionne :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char *GetFileTextMin( FILE *File )
{
unsigned long int FileSize = 0;
char *Text = NULL;
fseek( File, 0, SEEK_END );
FileSize = ftell( File );
fseek( File, 0, SEEK_SET );
Text = (char*) malloc( sizeof( char ) * ( FileSize + 1 ) );
fread( Text, sizeof( char ), FileSize, File );
Text[ FileSize ] = '\0';
strcpy( Text, strlwr( Text ) );
return Text;
}
int main( void )
{
FILE *File = NULL;
File = fopen( "text.txt", "rb" );
printf( "%s", GetFileTextMin( File ) );
fclose( File );
return 0;
}
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
autre solution, originale et portable à 10000%: pour chaque caractère
(pour autant que ca soit bel et bien une lettre et pas un chiffre ou
quoi, tu fais

if (chaine[a]>90)chaine[a]-=(97-65);

sisi

si tu comprends pas trouves toi une table ASCII

_______________________


Omnia vincit labor improbus
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Justement ce n'est pas portable, il faut utiliser toupper (<ctype.h>).
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
comment ca pas portable? au contraire. ascii c'est 'american standard',
c'est le meme pour tous les pcs, sur linux, windows, mac, dos, bios,....

_______________________


Omnia vincit labor improbus
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Oui ASCII c'est 'American Standard...' seulement ce n'est pas le seul
jeu de caractère existant, on trouve également l'EBCDIC d'IBM (ce qui
fait que ton code n'aura pas le même comportement sur une machine IBM).
C'est ecris dans K&R, de nombreux exemples supposent que le jeu de
caractere est l'ASCII mais le C ANSI (ISO C90) est indépendant du jeu
de caractere de la machine par soucis de portabilité (sinon pas de C
sur les machines IBM par exemple). C'est la raison d'etre des fonctions
de l'en-tete <ctype.h> et independament du jeu caractere on a des
relations qui sont toujours vrai comme le codage consécutif [a-z] et
[A-Z] vrai pour signed char et unsigned char ce qui fait que l'on peu
toujours faire un peu d'arithmetique de maniere portable.



Si tu reduis le monde des ordinateurs à celui des PC tu ne sauras
jamais programmer de maniere portable. Le but du C c'est d'etre
portable, renseignes toi sur l'histoire du C pour comprendre sa
philosophie car c'est sur que d'etre habitué à programmer sous windows
ca n'aide pas.
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
bon écoute point de vue portabilité je te fais confiance, moi c'est pas
mon fort, Funto me saoule pour que je fasse du portable mais moi
j'arrive jamis, il a trop du mal a recompiler
mes sources sous ubuntu.... alors je te fais confiance

++
_______________________


Omnia vincit labor improbus