我的C程序有问题。 这是我的main()代码:
void main()
{
const float impo = 0.45;
const float reve = 0.28;
char name[30];
float pauto, pfab, pimp, prev;
printf("Enter the car name\n");
scanf_s(" %s", name);
printf("Enter the price of retail\n");
scanf_s("%f", &pfab);
pimp = pfab * impo;
prev = pfab *reve;
pauto = pfab + pimp + prev;
printf("Car name : %s\tCar final Price = %.2f\n\7",name,pauto);
system("pause");
}
问题在于,当我编译我的代码并输入汽车名称时,它不会出现在printf上... 有人能帮帮我吗?
答案 0 :(得分:2)
此
scanf_s("%s", name);
应该是:
scanf_s("%s", name, sizeof(name)); /* Assumes char name[42 or such]. */
与 scanf 和 wscanf 不同, scanf_s 和 wscanf_s 要求为所有输入参数指定缓冲区大小类型 c , C , s , S 或中包含的字符串控件集] 即可。字符的缓冲区大小作为附加参数传递,紧跟在指向缓冲区或变量的指针之后。
必须是
int main(void)
顺便说一句。
答案 1 :(得分:1)
尝试使用
scanf_s("%s", name, _countof(name));
scanf_s是scanf的安全版本,需要输入缓冲区大小的参数。