ich meinen Grunde C bin Überarbeitung für das kommende Quiz vorzubereiten, als ich eine Funktion des Schreiben eine Zeicheneingabe einfach zu nehmen und es in eine Struktur zu speichern und wieder ausdrucken. Es gibt kein Problem mit dem Kompilieren, aber ich habe logisches Problem bekommen. Wie behebe ich das?Logical Ausgabe mit printf und scanf
#include <stdio.h>
struct player
{
char letter;
int age;
double avg;
};
int main()
{
struct player P1;
char name;
int age;
double avg;
printf("Enter age: ");
scanf("%d", &age);
printf("Enter avg: ");
scanf("%lf", &avg);
printf("Enter name: ");
scanf("%s", &name);
P1.letter= name;
P1.avg = avg;
P1.age = age;
printf("\n Age is: %d \n", P1.age);
printf("Avg is: %lf", P1.avg);
printf(" \n Name is: %c \n", P1.letter);
return 0;
}
Wenn ich für int in '1' setzen, Ausgang wäre „Alter ist:.. 0'
'scanf ("% s", &name);' => 'scanf ("% c", &name);' ' – Stargateur
scanf (“ % s ", &name);' - Sie sollten [die Anforderungen des Formatbezeichners '% s' lesen.] (http://en.cppreference.com/w/c/io/fscanf). Sie geben keinen angemessenen Betrag an Platz für einen Namen Zeichenfolge zu lesen. – WhozCraig
guter alter Buffer overrun! nie in einen C-String mit einer unbekannten Länge schreiben. nie. –