Qu'est-ce qui ne va pas dans ce programme? J'essaye de comprendre depuis 2 jours mais aucune aide du tout !! La sortie de chaîne est seulement après la saisie de chaîne et après avoir choisi le choix, la chaîne de caractères par défaut est le nouveau caractère de ligne par défaut je suppose. En plus, si je tape string lors de la saisie d'un choix, il me montre le nom affiché par défaut. Voici mon code:Impossible de saisir correctement la chaîne dans gcc ubuntu linux
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct marks {
char subject[15];
int mark;
};
struct student {
char name[10];
int roll;
struct marks m[3];
};
void displayData(struct student);
int displayChoice();
struct student getNewRecord();
int main() {
struct student s[5];
int count = 0;
int choice;
do{
choice = displayChoice();
if(choice == 1){
s[count] = getNewRecord();
count ++;
}
else if(choice == 4)
break;
else
printf("Invalid choice");
}while(1);
}
struct student getNewRecord() {
struct student temp;
printf("Enter your Name : ");
fgets(temp.name, 10,stdin );
printf("Your name is : %s",temp.name);
return temp;
}
int displayChoice() {
int choice;
printf("\n\nPlease select your choice :\n");
printf("1. Add new Record\n");
printf("2. Display All data \n");
printf("3. Remove last Record\n");
printf("4. Exit the program\n");
printf("What is your choice : \n");
scanf("%d", &choice);
return choice;
}
void displayData(struct student s){
printf("Your name : %s", s.name);
}
Et voici quelques captures d'écran:
Je ne sais pas et n'a pas la moindre idée de ce qui se passe mal. Aidez-moi s'il vous plaît .. Merci d'avance ..
solution la plus simple: 'char factice; scanf ("% d% c", & choice, & dummy); 'Votre' scanf' lit la valeur de l'entier et laisse la voiture '' \ n'' (la valeur ASCII de la touche enter keyboard) dans le tampon 'stdin'. Il faut donc le mettre en bobine avant de lire quelque chose de nouveau. – LPs
Il a résolu le premier problème. Lorsque je sais saugat pour le choix, il affiche la sortie montrant votre nom est saugat .. comment puis-je le réparer? – user3213732
Je ne vous comprends pas. Pourriez-vous élaborer? Votre code est supposé sortir 'printf (" Votre nom est:% s ", temp.name);' juste après que le nom soit entré. – LPs