Langage c

Fermé
k... - 3 juin 2003 à 18:03
 pouet - 4 juin 2003 à 16:36
bonjour
je cherche le code pour remplacer ts caractere precedé d'un espace par sa majuscule
merci
une debutante en langage c
A voir également:

6 réponses

bonjour,

je propose:
void remplace(char *str)
{
char *ptr;
ptr = strchr(str, ' ');
if (ptr && (ptr + 1) != '\0')
*ptr = toupper(*ptr);
}
il manque une boucle evidemment...

--
pouet
0
Ouais bien sur ...
Pourquoi faire simple quand on peux faire compliqué ?
0
pouet > Derrick
4 juin 2003 à 14:03
peux tu exprimer clairement ta pensee s il te plait?

--
pouet
0
lof. Messages postés 689 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 11 juin 2007 44
3 juin 2003 à 18:18
Bonjour,
Alors il faut d'abord commencer par construire l'algorithme. Pour résoudre ce problème.

quelques éléments en vrac :
Recherché le caractère ' '
ensuite le caractère suivant et remplacé par le caractère qui se trouve 32 place avant la lettre en minuscule.

exemple
A : 65
a : 97

x: 120
X: 88

rappel: un caractère est représenté par un entier dans la table ascii
exemple
for(int i=0;i<255;i++)
println("%c"i);

Si ça peut aider ...
0
merci pour ta reponse
j'ai étudié cette possibilité mais comment recuperer ma chaine de caractere une fois modifiée ?
0
lof. Messages postés 689 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 11 juin 2007 44 > k...
4 juin 2003 à 10:58
Si je ne dis pas de c***ie et c'est pas gagné en c.
mais en C un chaine de caractères est un tableau de caractère char[] donc tu peux l'utiliser sous cette forme.
non ??
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
4 juin 2003 à 10:39
Un ptit truc pour la clarté en C : n'utilise pas le code ASCII, utilise 'A' pour le code ASCII de 'A' par exemple

@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
0
pour la clarte, oui. mais pas seulement.
toutes les machines n ont pas un jeu de caractere ASCII.
croire que 'a' = 64 est une erreur, de la meme maniere que croire que
'A' - 'a' = 32
pour le probleme pose, il _faut_ utiliser toupper().

--
pouet
0
Galfus Messages postés 242 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 novembre 2008 14
4 juin 2003 à 14:46
Amis de la simplicité bonjour !

je propose de faire une boucle qui parcours la chaine de caractère. A chaque tour de boucle faire un test :
si c un espace, alors faire un nouveau test :

if(toupper(chaine[compteur-1])
{
chaine[compteur-1]=toupper(chaine[compteur-1]);
}

A+

<------Galfus------>
In penguin we trust
0
salut,

c est pas simple, tu fais un test inutile.
ca c est simple:
*ptr = toupper(*ptr);

et accessoirement ton code est faux.
il est dit "_precede_ d un espace".

--
pouet
0
Galfus Messages postés 242 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 novembre 2008 14 > pouet
4 juin 2003 à 16:19
dsl,
je voulais dire +1...
et je vois pas pkoi j'ai 1 test de trop : 1 test pour vérifier que c un espace et un autre pour vérifier que la lettre n'est pas déjà en maj

<------Galfus------>
In penguin we trust
0
pouet > Galfus Messages postés 242 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 novembre 2008
4 juin 2003 à 16:36
extrait du man de toupper:
RETURN VALUES
If the argument is a lower-case letter, the toupper() function returns
the corresponding upper-case letter if there is one; otherwise the argu-
ment is returned unchanged.

--
pouet
0

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

Posez votre question
un de mes potes pariculierement reloud me dit que les pointeurs c est complique.
je reecris mais c est moins beau :(

#include <stdio.h>
#include <ctype.h>

void remplace(char *string)
{
unsigned int i;

for (i = 0; string[i] != '0'; i++)
{
if (string[i] == ' ')
string[i +1] = toupper(string[i + 1]);
}
}

int main(int argc, char *argv[])
{

remplace(argv[1]);
puts(argv[1]);
return 0;
}

$gcc -Wall -ansi -pedantic test.c -o tutu
$./tutu 'pouet est tres beau'
pouet Est Tres Beau

--
pouet
0
moi je proposerai de le faire en caml ca serait bien mieux, ca elevrai enfin le niveau de nos amateurs, car ne pas coder en C avec des pointeurs, faut pas etre doue.
0