gpt4 book ai didi

c++ - strcpy_s 未处理的异常?

转载 作者:太空宇宙 更新时间:2023-11-04 13:22:23 26 4
gpt4 key购买 nike

我正在尝试使用 strcpy_s,但我遇到了这个错误:

Unhandled Exception...

struct Item { 
//Item's
int code; // Code
char* name[20];

int amount; //Amount in stock
int minAmount; //Minimum amount

float price; //Price
};

重要的行是开头和旁边带有"@@@@@@@@@" 的行。 (spot = 0,接收到 name 字符串,storemain() 中初始化)。

    //add an item to store
void addItem(Item* store, int maxItems, int &numItems)
{
if (maxItems == numItems)
{
cout << "ERROR \n";
return;
}

int spot = numItems; // our item's spot in store[]
int code; // inputted code

//Item's attributes' input

cout << "enter code : \n"; //code
cin >> code;
store[spot].code = code; //Code

cout << "enter name : \n"; //Name

_flushall();
char* name = new char[20];
gets_s(name, 20);

numItems++; //forward the number of items

strcpy_s(*store[spot].name, 20, name); //Name UNHANDLED EXCEPTION @@@@@@@@@@@@@@@@@@@@@@@@@@@@

cout << "enter amount : \n"; //Amount in stock

do
{
cin >> store[spot].amount;

if (store[spot].amount < 0) //not negative
cout << "ERROR \n";

} while (store[spot].amount < 0);

cout << "enter minimum amount : \n"; //Minimum amount for orders

do
{
cin >> store[spot].minAmount;

if (store[spot].minAmount < 0) //not negative
cout << "ERROR \n";

} while (store[spot].minAmount < 0);

cout << "enter price : \n"; //Price

do
{
cin >> store[spot].price;

if (store[spot].price < 0) //not negative
cout << "ERROR \n";

} while (store[spot].price < 0);
}

最佳答案

我建议您分别测试调用 strcpy_s 和代码的每个其他可疑部分,看看是否有任何问题,如果有,解决它,然后将其插入 addItem 函数。

From 在发布的代码中可见,在您使用的大多数函数中,您似乎都在传递一个指针变量,前面有取消引用运算符,例如 strncpy_s() 的签名是:

errno_t strncpy_s(char *restrict dest,
rsize_t destsz,
const char *restrict src,
rsize_t count);

您需要传递不带 * 的第一个参数,因为它是一个指针:Item* store,即传递为:store[spot] .名称

检查 this article about pointer assignment ,这将帮助您了解如何 pass a pointer as an argument to a function .


评论后编辑

您的第二个错误消息可能是因为 store 的成员 name 不是指针,您可能需要使用 & 运算符传递它,即传递它的地址:

strcpy_s(&store[spot].name, 20, name);

关于c++ - strcpy_s 未处理的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34709350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com