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

petit probleme en C

destroyor95
destroyor95
Niveau 6
09 juillet 2004 à 11:37:51

salut , quand je compile ca :

  1. include < stdio.h>

int main()
{
int nombre_que_je_rentre;
int resultat_a_trouver;
resultat_a_trouver=5;
printf("veuillez entrer un nombre\n");
scanf("%d",nombre_que_je_rentre);
if(nombre_que_je_rentre<resultat_a_trouver)
printf("t´as valeur est trop basse , monte \n " );
else if(nombre_que_je_rentre>resultat_a_trouver)
printf("t´as valeur est trop haute , baisse \n " );
getchar();
return 0;
}
Ca marche , mais apres quand je veux l´essayer il me dit que mon prog a genere des erreurs , sachant que j´utilise win2k service pack 2
MERCI ALL :bye:

JeanYvesYves
JeanYvesYves
Niveau 10
09 juillet 2004 à 11:43:48

ça vient de la :

scanf("%d",nombre_que_je_rentre);

il faut mettre :

scanf("%d",&_que_je_rentre);

JeanYvesYves
JeanYvesYves
Niveau 10
09 juillet 2004 à 11:49:37

je t´explique la chose : ta mémoire, c´est comme une regle graduée : chaque int que tu crées est posé qq part, pour savoir l´endroit sur la regle ou il est posé, on dit qu´on demande son " adresse"

par exemple, tu crees un int, l´ordi cherche en mémoire une adresse disponible :
il va ranger ton " int plouf" a l´adresse 100325

Il faut savoir que pour scanf, le 2e parametre que tu mets est une adresse :

scanf(format,adresse)

En gros, quand tu crees le int nombre_que_je_rentre

sa VALEUR va etre par exemple 0
son ADRESSE va etre par exemple 1213011

en mettant direct

scanf("%d",nombre_que_je_rentre);

tu lui mets l´adrese nombre_que_je_rentre, autrement dit, tu lui demande d´écrire a l´adresse 0 : plantage assuré : l´adresse 0 est réservée.

quand tu mets &_que_je_rentre, ça veut dire :

ADRESSE de nombre_que_je_rentre
autrement dit, la, il te prendra bien le 1213011

Bon, tout cela s´apprend avec les pointeurs ( regarde dans mon tuto le chapitre 1.17)
si tu n´es pas familier avec ça, dis toi juste que pour le scanf, tu colles un & avant la variable que tu attends ! !
( sauf pour un char* ! !!)
mais bon....

CYBER_BOB
CYBER_BOB
Niveau 10
09 juillet 2004 à 11:50:31

destroyor95 < < tu avais du mal recopié mon exemple :) en fait petite explication rapide tu met le ´&´ pour attribuer un nombre a une variable pour char, tu ne dois pas mettre le ´&´...
Bob...

CYBER_BOB
CYBER_BOB
Niveau 10
09 juillet 2004 à 11:52:31

merci JY² pour cette explication :)
mais pourquoi pour un char c´est different?

JeanYvesYves
JeanYvesYves
Niveau 10
09 juillet 2004 à 11:58:21

alors attention :

un char, ce n´est pas différent

mais un char* oui

voici comment ça se passe en mémoire :
quand tu fais une chaine de caractere, tu fais un tableau de char.

et comment le C stocke un tableau ?
il stocke son ADRESSE

c´est a dire que quand tu fais :

char* plouf="bonjour";
ou
char plouf[50]="bonjour";

la variables plouf est DEJA une adresse.

il y a des différences subtiles entre un char* et un char[]
mais bon, pas la peine de s´embrouiller, les 2 sont des adresses.

CYBER_BOB
CYBER_BOB
Niveau 10
09 juillet 2004 à 12:10:28

si pour un char la variable est deja en memoire, pourquoi ne pas avoir fait pareil avec un int?

dnob700
dnob700
Niveau 10
09 juillet 2004 à 12:11:40

quand on fait :
char* plouf="bonjour";
il ne réserve que 8 octets non ? c´est a dire qu´après on ne peut pas mettre qqch de plus grand non ?

CYBER_BOB
CYBER_BOB
Niveau 10
09 juillet 2004 à 12:16:02

si normalement tu peux mettres quelque chose de plus grand, il doit " adapté" la memoire en quelque sorte...

JeanYvesYves
JeanYvesYves
Niveau 10
09 juillet 2004 à 12:18:27

dnob700 : tout a fait.

Cyber_Bob : je te propose de regarder mon tuto:
http://www.fvirtman.fr.st
info/progs/tutoC++ § 1.17

ça parle de pointeurs.
Quand tu crees un char tout seul, tu crees une seule variable.
quand tu crees un char* , tu crees un POINTEUR vers une zone de mémoire ( que tu alloues), autrement dit ta variable char* est l´adresse de ton tableau, que l´ordi stocke plus loin en mémoire.

JeanYvesYves
JeanYvesYves
Niveau 10
09 juillet 2004 à 12:22:40

si tu veux mettre qq chose de plus grand : il faut faire une réalloc :

c´est a dire que l´ordi t´a reservé 8 " cases", mais derriere, il a rangé des machins qui n´ont rien a voir : si tu écris plus loin, tu ecrases des machins qui sont plus loin... -> risque fort de plantage.

tu realloues, c´est a dire que tu crees une zone plus grande, tu copies ce que tu as déja sur la petite zone vers la grande, et tu detruit la petite zone, sans oublier de mettre a jour le pointeur pour qu´il pointe sur la nouvelle zone, et non plus l´ancienne.

ANALOGIE : un pointeur, c´est comme un lien internet :
vous avez une adresse genre www.moi.com c´est un pointeur.
Vous etes hebergé chez trypod : donc moi.com POINTE sur trypod, vous vous rendez compte que ça devient nul trypod, alors vous creez un compte chez Frii, vous copiez vos données dessus, puis vous effacez le site de trypod.
Pour que tout reste bien : vous changez la valeur du pointeur moi.com est le faisant pointer sur Frii. Et l´utilisateur n´y voit que du feu ! !
Vous venez de faire un " realloc" de site

destroyor95
destroyor95
Niveau 6
09 juillet 2004 à 13:54:46

Merci les gars :)

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