Language c sur les pointeurs
Mikesega
Messages postés
11
Statut
Membre
-
loupius Messages postés 789 Statut Membre -
loupius Messages postés 789 Statut Membre -
Bonjour,
je voudrais savoir pourquoi mon programme ne pointe pas sur le pointeur
#include <stdio.h>
#include <stdlib.h>
void saisir (char *sant,char *tour){
char nom [20],prenom [20];
printf("donnez votre nom et prenom");
scanf("%s %s",&nom,&prenom);
sant=nom;
tour=prenom;
}
main(){
char *N,*P;
saisir(N,P);
printf("%s %s",N,P);
system("pause");
return 0;
}
Merci de m'aider
je voudrais savoir pourquoi mon programme ne pointe pas sur le pointeur
#include <stdio.h>
#include <stdlib.h>
void saisir (char *sant,char *tour){
char nom [20],prenom [20];
printf("donnez votre nom et prenom");
scanf("%s %s",&nom,&prenom);
sant=nom;
tour=prenom;
}
main(){
char *N,*P;
saisir(N,P);
printf("%s %s",N,P);
system("pause");
return 0;
}
Merci de m'aider
A voir également:
- Language c sur les pointeurs
- Vistalizator language pack windows 7 - Télécharger - Traduction
- Windows display language french - Guide
- The language dll vb6fr.dll could not be found - Forum Windows
- Desmume change language - Forum Jeux vidéo
- Autocad 2008 language pack french - Forum AutoCAD
1 réponse
char nom [20],prenom [20];
scanf("%s %s",&nom,&prenom);
Mais le compilateur ne t'a pas prévenu qu'il y a quelque chose qui ne vas pas ? L'adresse du tableau c'est 'nom' et non '&nom' !
D'autre part 'sant = nom' n'a aucun sens car 'nom' est une variable locale et que vouloir conserver son contenu est pure illusion, le contenu est perdu à la fin de la fonction.
Je vais te donner un mauvais exemple mais qui fonctionne:
Bonne continuation.
scanf("%s %s",&nom,&prenom);
Mais le compilateur ne t'a pas prévenu qu'il y a quelque chose qui ne vas pas ? L'adresse du tableau c'est 'nom' et non '&nom' !
D'autre part 'sant = nom' n'a aucun sens car 'nom' est une variable locale et que vouloir conserver son contenu est pure illusion, le contenu est perdu à la fin de la fonction.
Je vais te donner un mauvais exemple mais qui fonctionne:
#include <stdio.h>
#include <stdlib.h>
void saisir (char **sant, char **tour)
{
*sant = malloc(20);
*tour = malloc(20);
printf("Donnez votre nom et prénom: ");
scanf("%s %s", *sant, *tour);
}
int main()
{
char *n,*p;
saisir(&n, &p);
printf("%s %s", n, p);
free(n);
free(p);
//system("pause");
return EXIT_SUCCESS;
}
C'est un mauvais exemple car il ne faut pas utiliser 'scanf' pour saisir des chaînes de caractères; il n'y a en effet aucun contrôle sur la taille de la saisie et s'il y a un débordement c'est la catastrophe. A part cela, l'exemple est correct. Réfléchis au passage de paramètre et à l'allocation mémoire.
Bonne continuation.