Der Code, der diesem Beitrag beigefügt ist, ist Teil eines größeren Programms, aber ich habe Probleme beim Eingeben von Eingaben für meine strukturierte Variable 'Titel' und 'Autor'. Das Programm scheint sich darüber zu bewegen und zur nächsten Zeile überzugehen. Auch wenn ich [^ \ n] vor 's' im String-Spezifizierer verwende, tut es das gleiche, aber ich lese, dass es verwendet wird, um eine Zeichenkette als Eingabe mit scanf zu nehmen. Lesen Sie ein paar Beiträge, aber ich kann das Problem nicht herausfinden. Nur mit C beginnen, jede Hilfe wäre willkommen!Verwenden von scanf für Struktureingabe
struct books{
char title[30];
char author[30];
char subject[20];
int quantity;
int book_id;
char *category;
int count;
float price;
};
struct books book;
book.book_id=id;
printf("\n\n\t\tBook Name:\n\t\t");
scanf(" %s",book.title);
printf("\n\n\t\tAuthor:\n\t\t");
scanf(" %[^\n]s",book.author);
printf("\n\n\t\tQuantity:\n\t\t");
scanf("%d",&book.quantity);
printf("\n\n\t\tPrice:\n\t\t");
scanf("%f",&book.price);
Es könnte das Leerzeichen vor% s sein – Luci
Enthält Ihr Format-Spezifizierer tatsächlich '[^ \ n]' und nicht '[^ \ n]'? Sie möchten die zusätzlichen Räume dort auch nicht. Das '[^ \ n]' spezifiziert '\ n' ausdrücklich anstelle eines beliebigen Whitespace als Zeichenfolgebegrenzer. Wenn du das versucht hast, dann ist das der Code, den du gepostet haben solltest. Funktioniert es, wenn die Eingabe keine Leerzeichen enthält oder ist das auch ein Problem? – Clifford
[mcve], bitte! BTW, das 's' nach' [^ \ n] 'ist falsch und sollte entfernt werden. Dies hat zwar keine Auswirkung, ist aber völlig überflüssig. –