Langage C

Résolu
wanish10 -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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

A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Merci de poster votre programme, ça sera plus simple pour aider.
1
wanish10
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > wanish10
 
Le problème n'est pas à l'affichage mais à la lecture, le scanf s'arrête à l'espace.
0
wanish10 > wanish10
 
SVP est ce qu'il y a une solution????
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > wanish10
 
Comme ceci par exemple :
scanf("%[^\n]",identite);
À voir aussi : La saisie de texte sécurisé
0
wanish10
 
merci infiniment ça marche bien merci mille fois
0
wanish10
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
@ur3l'$
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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