Langage C

Résolu/Fermé
wanish10 - 2 févr. 2012 à 23:41
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 8 févr. 2012 à 14:35
Bonjour,

je viens d'établir un programme en langage C, dans lequel j'ai déclaré une variable tableau de type chaine de caractère, pour pouvoir stocker un nom & prénom, avec un espace entre les deux, mais lorsque je viens d'afficher le résulta, le programme ne fonctionne pas comme il faut, merci de votre aide

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 févr. 2012 à 23:43
Bonjour,

Merci de poster votre programme, ça sera plus simple pour aider.
1
merci
mon programme est :
#include<stdio.h>
#include<stdlib.h>
main()
{
char identite[20];
printf("entrer votre nom et prenom\n");
scanf("%s",&identite);
printf("tu es %s\n",identite);
system("pause");
return 0;
}

si je tape par exemple ( jaune killy ) le programme m'affiche seulement jaune
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > wanish10
2 févr. 2012 à 23:57
Le problème n'est pas à l'affichage mais à la lecture, le scanf s'arrête à l'espace.
0
SVP est ce qu'il y a une solution????
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > wanish10
3 févr. 2012 à 00:23
Comme ceci par exemple :
scanf("%[^\n]",identite);
À voir aussi : La saisie de texte sécurisé
0
merci infiniment ça marche bien merci mille fois
0
en tous les cas merci mais hélas, j'ai le même problème, mais cette fois avec un tableau de deux dimensions, j'ai essayer avec tous les méthodes même avec la fonction fgets(*char,dim,fil).
le programme est :

//saisie des informations concernants les candidats
#include<stdio.h>
#include<stdlib.h>
main()
{
char prenom[5][10];
char nom[5][10];
float note[3][3],s;
int i,j;
printf("------------------* calcul des moyennes des candidats *-----------------\n\n");
//remlissage des tableaux
for(i=1;i<=2;i++)
{
printf("prenom : \n ",i);
scanf("%19[^\n]",prenom[i]);
printf("nom : \n ",i);
scanf("%19[^\n]",nom[i]);
for(j=1;j<=3;j++)
{
printf("donner la note de trimestre %d\n",j);
scanf("%f",¬e[i][j]);
}
}
puts("\n\n");
//affichage des informations
for(i=1;i<=2;i++)
{
s=0;
printf("------------------* fiche de : %s %s *-----------------\n\n",prenom[i],nom[i]);
for(j=1;j<=3;j++)
{
printf("la note de trimestre %d est %0.2f\n",j,note[i][j]);
s=note[i][j]+s;
}
printf("la moyenne est : %0.2f\n",s/3);
puts("\n");
}
system("pause");
return 0;
}

lorsque j'élimine la boucle destiné pour la saisie des notes, le programme marche bien, mais avec cette boucle je peux pas saisir une chaîne de caractère avec un espace.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
8 févr. 2012 à 14:35
Si tu définis une taille 10 pour tes noms et prénoms (char prenom[5][10], char nom[5][10]), ce n'est plus %19[^\n] qu'il faut utiliser mais %9[^\n]

Ensuite gros problème au niveau de ton scanf("%f",¬e[i][j]);
Déjà, je ne vois pas ce que viens faire le ¬ et surtout j est compris entre 1 et 3 alors qu'il devrait très certainement être entre 0 et 2, même si on en sait rien puisque e n'existe pas !
Remarque : tu as le même problème d'indice un peu plus loin, mais tout ceci ne concerne plus du tout ton problème de lecture avec espaces...
0
Salut !!

Ta méthode n'est pas correcte -> scanf("%[^\n]",identite);

Voici un petit exemple si j'ai bien compris ton programme :

int main() {

char saisie[100]; // tableau qui contient nom + espace + prenom

printf("Veuillez saisir votre nom et prenom du style 'nom prenom':\n");
scanf("%99s", saisie); // 99 caracteres max seront pris

printf("Resultat de la saisie -> %s\n", saisie);


return 0;
}
-3
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
4 févr. 2012 à 23:31
En quoi ne serait-elle pas correcte ?
En plus wanish10 (qui a posé la question) a lui même mis que ça marchait !!!
Ça correspondait donc bien à ce qu'il avait besoin, contrairement à ta solution pour laquelle le scanf s'arrête malgré tout à l'espace !!!
0