- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 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
字符串,store
在 main()
中初始化)。
//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/
我想输出三个国家首字母中最小的字母,这是代码: #include #include using namespace std; int main() { void smallest_string
我在使用 strcpy_s 时遇到一些错误,无法弄清楚我做错了什么。 代码: 播放器.hpp: string name; Player(string); 播放器.cpp: Player::Player
我正在尝试使用 strcpy_s,但我遇到了这个错误: Unhandled Exception... struct Item { //Item's int code; // Code
众所周知,strcpy_s是strcpy的安全版本。 但我想知道它是如何工作的...... 让我们看一些例子。 strpy_s的声明: errno_t strcpy_s(_CHAR *_DEST, s
我有一个 C++11 项目,并且添加了一些 strcpy_s 方法调用。这在windows上可行,但是在gcc上编译时,出现错误指出未找到 strcpy_s 符号。 我确实添加了该行 #define
我只是想将“temp”中的内容复制到“p”中,但程序在 strcopy_s 行崩溃了。我是否遗漏了一些重要的规则? #include #include #include using namesp
我感觉我一直都是用strcpy来复制字符串,没有任何问题,但是我已经很久没用了,现在怎么弄都搞不定。 我确定我遗漏了一些愚蠢的东西,但我对此感到沮丧有一段时间了,所以我来这里看看是否还有其他人可以提供
出于某种原因,一个字符不能进入 strcopy_s();... #include #include using namespace std; struct DATE { int year;
我想知道我是否可以安全地替换此处定义的 strcpy_s https://msdn.microsoft.com/en-us/library/td1esda9.aspx - (有两个参数的)在这里定义了
尝试使用 strcpy_s 复制字符串 char foo[10]; // a buffer able to hold 9 chars (plus the null) char bar[] = "A
我需要将std::string 数据 复制到一个char 数组中。我的字符串的长度是可变的,但我的 char 数组的长度是固定的。 const int SIZE = 5; char name[SIZE
我正在尝试使用更安全的 strcpy_s 更新对 strcpy 的调用。旧函数调用如下所示: char buf[6]; strcpy(buf+1, "%#c"); 为了将上面的代码变成更安全的版本,我
我有一个 C++11 项目,我添加了一些 strcpy_s 方法调用。这适用于Windows,但是在gcc 上编译时,会出现错误声明未找到 strcpy_s 符号。 我确实添加了行 #define _
我是 C++ 新手。我正在编写以下简单代码。我想将字符 [40] 传递给一个函数,然后得到与输出相同的值。如果我在以下位置进行调试。 strcpy_s(x,100,测试仪); 但如果我写“This i
我在 Debian 8 系统上使用 clang。我有标准的 C++ 头文件。然而,没有 header 定义 strcpy_s。这是为什么? # grep -iRHI 'strcpy_s' /usr 2
运行代码后,出现如下错误。如何用 strcpy_s 替换 strcpy?谢谢你的帮助。而且当我尝试直接用 strcpy_s 替换 strcpy 时,它说命名空间“std”没有成员“strcpy_s”。
这个问题在这里已经有了答案: How to find the size of an array (from a pointer pointing to the first element array
我正在尝试使用 VS 2013 在 C++ 中连接两个字符串。下面是代码: char *stringOne = "Hello"; char *stringTwo = " There!"; char *
我的目标是生成一个具有正确数量点的新数组,并将一个旧字符数组复制到其中。 使用strcpy_s时,抛出异常。我不明白为什么会抛出异常,指出缓冲区太小。我不能使用 vector 或字符串。如何使用 st
我在这条线上有缓冲问题 strcpy_s(*(pWords + word_count), word_length, pWord); 我正在尝试从 argv[1] 中读取一个文件并打印出该文件中的每个单
我是一名优秀的程序员,十分优秀!