CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Changer les caractères en C

elfedaedrique
elfedaedrique
Niveau 6
29 décembre 2006 à 10:06:01

Bonjour,

Je voudrais savoir comment changer un caractère (par exemple "a") en un autre.

En gros on demande à l´utilisateur d´erire un mor ou une phrase :

scanf("%s", &MotOuPhrase);

Et il nous redonne ce qu´il a tapez en changeant les caractères :

printf("%s", MotOuPhraseModifié);

Je suis a un assès bas niveau alors si c´est trop compliqué dites le moi

Merci, Bonne journée

godrik
godrik
Niveau 30
29 décembre 2006 à 12:39:44

il suffit de les changer un a un.
En C, une chaine de caractere est un tableau de caractere terminé par le caractere null: ´\0´.
Pour faire ce que tu veux, il suffit de copier ta chaine dans un autre tableau (attention, = ne fonctionne pas sur des tableau, il faut utiliser la fonction strcpy). Puis il faut modifier ce tableau de la façon que tu veux. Par exemple pour changer tous les caracteres dans le caractere suivant:

void change (char* t)
{
for (int i=0; t[i] != ´\0´; i++)
t[i]++;
}

elfedaedrique
elfedaedrique
Niveau 6
29 décembre 2006 à 14:05:23

Mais ton tableau il permet de décaler les lettres les unes des autres par exemple
a->b
b->c
c->d ect.

Mais est-ce qu´il permet de faire un orde pas logique du genre
a->b
b->z
c->g ect.

et est-ce qu´il permet d´écrire des caractère spéciaux ou des nombres
a->4
b->8
c-><
d->|)

Merci de ta réponse.
PS : Jtrouve l´ambiance bien sympa vous prenez le temps d´aider les autres sympa :ok:

Pseudo supprimé
Pseudo supprimé 29 décembre 2006 à 14:19:00

En fait, non, sons sytsème ne fait que parcourir le tableau qui représente la chaîne de caractères, il t´a donné le mécanisme de base pour que tu puisses ensuite y faire ce que tu souhaites :)

A chaque tour de boucle, t[i] pointe sur une lettre de ton mot.

godrik
godrik
Niveau 30
29 décembre 2006 à 14:37:17

il te reste a ecrire une fonction qui change un char et char et qui fait ce que tu souhaites.

elfedaedrique
elfedaedrique
Niveau 6
29 décembre 2006 à 18:03:04

mais dans ma nouvelle fonction qu´il faut créer pour changer un caractere je mais :
´a´ = ´4´
´b´ = ´8´
´c´ = ´<´
ect.
??

est ensuite j´aurais juste a marquer
printf("%s", LeNomDeLaFonction);

C´est ça ??

godrik
godrik
Niveau 30
29 décembre 2006 à 18:09:56

est ce que ´a´ = ´4´ est valide en C ?

elfedaedrique
elfedaedrique
Niveau 6
29 décembre 2006 à 18:49:24

Non plutôt
´a´ = 4 (sans guillemet)
c´est ça ??

Pseudo supprimé
Pseudo supprimé 29 décembre 2006 à 18:54:00

L´idéal serait de construire un tableau pour la traduction (Complexité en O(1)) :

translate[26] = {´a´,´j´,...,´o´};
et de l´adresser de la façon suivate (On suppose qu´il n´y a que des lettres en minuscules, sinon, il faut définir un tableau sur toute la table ASCII) :
lettreTraduite = translate[lettreLue-´a´];
(Sans optimisations de guru du C pour que ça reste compréhensible, mais ça me fait mal, vraiment mal de donner un exemple lisible :p)

Pseudo supprimé
Pseudo supprimé 29 décembre 2006 à 18:56:56

PS: Ton affectation est fausse elfedaedrique, tu cherches à affecter à un caractère constant une valeur, c´est une abberration numérique, il faut vite la tuer avant qu´elle ne devienne hors de contrôle !

char a=´4´; /* OK contient le caractère ASCII 4 */
char a=4; /* OK contient le 4ème caractère ASCCI */

elfedaedrique
elfedaedrique
Niveau 6
29 décembre 2006 à 23:50:27

Je croit que pour l´instant c´est trop compliqué pour moi je vais me remettre dans mon petit tuto du site du zero ^^ mais merci quand même ça me saervira peut être plu tard :ok:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment