Pb de majuscule à modifier sur un fichier

Lacharlottinne Messages postés 5 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 15 mai 2005 - 11 mai 2005 à 16:32
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 12 mai 2005 à 21:04
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

ciddu42 Messages postés 23 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 19 novembre 2019
11 mai 2005 à 17:07
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;
}
0
ciddu42 Messages postés 23 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 19 novembre 2019
11 mai 2005 à 17:10
SetFileTextToMin te retournes tout le texte du fichier en minuscule
0
ciddu42 Messages postés 23 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 19 novembre 2019
11 mai 2005 à 17:26
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;
}
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
11 mai 2005 à 20:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
11 mai 2005 à 21:27
Justement ce n'est pas portable, il faut utiliser toupper (<ctype.h>).
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
12 mai 2005 à 18:01
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
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
12 mai 2005 à 19:02
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.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
12 mai 2005 à 21:04
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
0
Rejoignez-nous