繁体   English   中英

Scanf_s不保存字符串的值

[英]Scanf_s dont save the value of the string

我的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");

}

问题是,当我编译我的代码并输入汽车名称时,它以后不会出现在打印文件中。有人可以帮我吗?

错误图片: http//i.imgur.com/aZ360Fi.png

这个

scanf_s("%s", name);

应该:

scanf_s("%s", name, sizeof(name)); /* Assumes char name[42 or such]. */

从MSDN

scanfwscanf不同, scanf_swscanf_s要求为[]中包含的cCsS类型或字符串控制集的所有输入参数指定缓冲区大小。 以字符为单位的缓冲区大小将作为附加参数传递到指向缓冲区或变量的指针之后。


它一定要是

int main(void)

顺便说一句。

尝试使用

scanf_s("%s", name, _countof(name));

scanf_s是scanf的安全版本,要求输入用于输入缓冲区大小的参数。

也可以在这里查看, http://faculty.edcc.edu/paul.bladek/CS131/scanf_s.htm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM