Se connecter / S'enregistrer
Votre question

Petit programme C...;

Tags :
  • Impression
  • Programmation
Dernière réponse : dans Programmation
14 Août 2005 02:44:07

Bonjour à tous
Voici un programme C, toutes les instructions après:
  1. printf("Hello, world!\n");
ne s'executent pas et je ne vois pas le pourquoi. pouriez vous m'aider s'il vous plait.


  1. #include <stdio.h>;
  2. #include <stdlib.h>
  3.  
  4. main()
  5. {
  6.  
  7. printf("Hello, world!\n");
  8. int *a,*b,*c;
  9. *a=5;
  10. *b=4;
  11. printf("Contenu *a : %d, adresse a : %p\n", *a, a);
  12. printf("Contenu *b : %d, adresse b : %p\n", *b, b);
  13. *c=*a ;
  14. *a=*b ;
  15. *b=*c ;
  16. printf("Contenu *a : %d, adresse a : %p\n", *a, a);
  17. printf("Contenu *b : %d, adresse b : %p\n", *b, b);
  18.  
  19. printf("Fin du programme\n");
  20. //return EXIT_SUCCESS;
  21. return 0;
  22. }


Merci d'avance

Autres pages sur : petit programme

14 Août 2005 10:09:47

salut,

avant d'écrire ou de lire dans un pointeur, il faut l'allouer.

donc avant le premier *a=5, il FAUT mettre a=malloc(sizeof(int)); b=malloc(sizeof(int));
le c j'ai l'impression que ça n'est pas nécessaire, puisque (si je comprends bien cet exercice) tu vas juste t'en servir pour swapper a et b.

essaie ça :

int main()
{

printf("Hello, world!\n");
int *a,*b,*c;
a=malloc(sizeof(int)); b=malloc(sizeof(int));
*a=5;
*b=4;
printf("Contenu *a : %d, adresse a : %p\n", *a, a);
printf("Contenu *b : %d, adresse b : %p\n", *b, b);
c=a ;
a=b ;
b=c ;
printf("Contenu *a : %d, adresse a : %p\n", *a, a);
printf("Contenu *b : %d, adresse b : %p\n", *b, b);

printf("Fin du programme\n");
//return EXIT_SUCCESS;
return 0;
}

14 Août 2005 11:12:07

Citation :
#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Hello, world!\n");
int *a,*b,*c;
*a=5;
*b=4;
printf("Contenu *a : %d, adresse a : %p\n", *a, a);
printf("Contenu *b : %d, adresse b : %p\n", *b, b);
*c=*a ;
*a=*b ;
*b=*c ;
printf("Contenu *a : %d, adresse a : %p\n", *a, a);
printf("Contenu *b : %d, adresse b : %p\n", *b,b);
printf("Fin du programme\n");
return(0);
}

cela compile sous gcc 4.0.2
Contenus similaires
14 Août 2005 11:18:06

oui, mais personne n'a parlé de compilation.

si tu veux écrire dans des pointeurs non alloués, c'est ton droit
13 Octobre 2006 07:55:04


int main()
{
printf("Hello, world!\n" );
int a,b,c;
a=5;
b=4;
printf("Contenu a : %d\n", a); scanf("%d", &a);
printf("Contenu b : %d\n", b); scanf("%d", &b);
c=a;
a=b;
b=c;
printf("Contenu a : %d\n", a);
printf("Contenu b : %d\n", b);
printf("Fin du programme\n" );
system("PAUSE");
return0;
}

Tout simple tout beau ^^
19 Novembre 2009 23:39:31

Oui, mais je pense que ce sur quoi il voulait travailler c'était les pointeurs,
faire la différence entre une variable, la valeur d'une variable et l'adresse d'une variable
et
un pointeur , sa valeur et son adresse hors ton code n'utilise pas de pointeurs ....

Le problème de son code est qu'il utilise un "%p" qui prendre une adresse et il y envoie "a" qui est une variable. Pour envoyer une adresse il faut "&a" et pas seulement "a".

L'autre problème est la façon qu'il a de déclarer ses pointeurs. En général quand on déclare on fait plutôt :
int x = 0;
ou
long *y = NULL; (pour un pointeur)

enfin, souvent (et je ne sais pas pourquoi) le programme bug si on associe pas un pointeur avec une variable et qu'on essaie de l'utiliser directement.
Il vaut mieux déclarer :
int a=0, *pointeur_sur_a = &a;

et la :
printf("Contenu *pointeur_sur_a : %ld, adresse *pointeur_sur_a : %p\n", *pointeur_sur_a, &pointeur_sur_a);
fonctionne
15 Mai 2012 19:05:45

il faut que tu mette un variable
#include <stdio.h>
#include <stdlib.h>

int main()
{
int nombre1=0, resultat=0
printf("Hello; World!\n");
scanf("%d", &nombre1);
printf("fin du programme")
}
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS