我正在修改我的基本C为即将到来的测验做准备,当时我正在编写一个函数来简单地接受一个字符输入并将其存储到结构中并再次打印出来。编译没有任何问题,但我不断收到合理的问题。我该如何解决?printf和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;
}
如果我把“1”,INT,输出将是“年龄是:0'
'的scanf( “%S”,&name);'=>'的scanf( “%C”,&name);'' – Stargateur
scanf的(” %s“,&name);' - 您应该[阅读'%s'格式说明符的要求。](http://en.cppreference.com/w/c/io/fscanf)。您没有提供适当的金额用于读取名称字符串的空间 – WhozCraig
良好的旧缓冲区溢出永远不会写入长度未知的C字符串从不 –