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

Petite aide en C

oleee
oleee
Niveau 44
13 octobre 2013 à 22:01:41

Je reprend le C et je veux creer un programme ou l'utilisateur est demandé de rentrer son nom et tant que ce nom ne sera pas le meme qu'un certain nom defini, la loop recommencera et il devra reentrer un nouveau nom.

Voici mon code:

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <string.h>

int main()
{

char name[10];
do{

printf("Please enter your name:");
scanf("%s",&name[10]);

printf("%s is a wrong name, enter again!\n",name);
}while(name[10]!="Jean");

return 0;
}

Pouvez vous me dire ce qui ne fonctionne pas?

ryviel
ryviel
Niveau 5
13 octobre 2013 à 22:06:43

La comparaison de chaînes de caractères ne se fait pas se cette manière.

http://www.cplusplus.com/reference/cstring/strcmp/?kw=strcmp

[denshaotoko]
[denshaotoko]
Niveau 25
13 octobre 2013 à 22:17:31

scanf("%s",&name[10]);

En faisant ça, tu envoies à scanf l'adresse de la dernière case mémoire de ton tableau de caractères

alors que si j'ai bien compris ce que tu veux faire, il faudrait envoyé l'adresse du tableau pour que scanf puisse "écrire dessus"

donc scanf("%s", name); name contient l'adresse de la première case du tableau

Sinon, scanf("%s, &name[0]);

ensuite, dans la condition du while

là tu compares un seul caractère (char) à une chaine de caractère (char[])

name[10] correspond au contenu de la 10ème case (donc la dernière) de ton tableau, c'est une lettre
et "Jean" est un char[]

Si je dis pas de bétises :oui:

oleee
oleee
Niveau 44
13 octobre 2013 à 22:18:30

Ok merci je l'ai changé et ca ne marche toujours pas, le programe se compile et tout, mais il y a un probleme aussi quand je rentre un nom, on me dit toujours: "u is a wrong name enter again" ca affiche pas le nom que j'ai rentré, et meme si je rentre jean, ca me fait la meme chose:

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <string.h>

int main()
{
char name1[]="Jean";
char name[10];
do{

printf("Please enter your name:");
scanf("%s",&name[10]);

printf("%s is a wrong name, enter again!\n",name);
}while(strcmp(name,name1)!=0);

return 0;
}

oleee
oleee
Niveau 44
13 octobre 2013 à 23:12:24

up

oleee
oleee
Niveau 44
13 octobre 2013 à 23:19:41

Voici mon code maintenant, ca a l'air de marcher un peu mieux, sauf que meme quand je rentre Jean comme nom, ca me print Jean is a wrong name etc.., mais je dirais que c'est logique vu que cette instruction est inclus dans le loop, comment eviter cela?

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <string.h>

int main()
{
char name1[]="Jean";
char name[10];
do{

printf("Please enter your name:");
scanf("%s",&name);

printf("%s is a wrong name, enter again!\n",name);
}while(strcmp(name,name1)!=0);
printf("Thank you!");

return 0;
}

ryviel
ryviel
Niveau 5
13 octobre 2013 à 23:22:57

Il suffit de vérifier que le nom est mauvais lorsque tu dois afficher le texte ;)

Glosoli
Glosoli
Niveau 10
14 octobre 2013 à 01:44:10

Essaie de présenter ça sous pastebin ce sera plus présentable !

Je t'ai fait le même programme en un peu plus rangé :d) http://pastebin.com/scYUtCPC et plus lisible

Et dans le code de ton dernier poste, tu dire d'afficher "Jean is a wrong name.." tant que strcmp == 1, or strcmp renvoie 0 si les deux chaînes de caractère sont identiques

Tu as juste à changer ta ligne != 0 par != 1

Glosoli
Glosoli
Niveau 10
14 octobre 2013 à 01:47:26

Ah ben non j'me suis trompé, honte à moi, oublie ce que j'ai écrit, j'suis fatigué, j'essaie de me corriger deux secondes :hap:

Glosoli
Glosoli
Niveau 10
14 octobre 2013 à 02:04:12

Effectivement, comme dit ryviel suffit d'ajouter une condition avant l'affichage de "%s is a wrong name), car lorsque les deux caractères corresponderont, le programme va continuer à traiter les données dans le while et finallement quitter la boucle

Je suis fatigué :hap:

J'pense que t'as dû trouver depuis un moment mais si tu trouves pas j'te spoil ici :d) http://pastebin.com/a9aaibtE
Pour me faire pardonner :hap:

olaaa
olaaa
Niveau 7
14 octobre 2013 à 16:24:15

Oui merci j'avais trouvé hier, en fait c'etait tres facile :ok:

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