gpt4 book ai didi

c - sprintf_s 和访问冲突

转载 作者:行者123 更新时间:2023-11-30 19:54:21 31 4
gpt4 key购买 nike

我在使用 C/C++ 程序的 Windows 上的 Visual Studio 中收到“0xC0000005:访问冲突读取位置错误”,并尝试简化以说明我的问题。下面的代码运行得很好:

char tmp[1000];
ULONG64 val1 = 1;
sprintf_s(tmp, 1000, "%lu, %s, %s", val1, "true", "false");

但是,当我向格式中添加额外的 unsigned long 时,会出现访问冲突,如下面的代码所示:

char tmp[1000];
ULONG64 val1 = 1;
ULONG64 val2 = 2;
sprintf_s(tmp, 1000, "%lu, %lu, %s, %s", val1, val2, "true", "false");

最佳答案

格式说明符%lu用于unsigned long,在MSVC上是32位而不是64位。

所以堆叠的参数是错误的,MSVC 应该对此发出警告。

您可以使用 %llu 对冲,但理想情况下使用正确的格式来保证固定宽度变量的匹配。

如果类型是 uint64_t 那么例如当使用 printf 时你应该有

printf("%" PRIu64 "\n", val1);

例如。

关于c - sprintf_s 和访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327938/

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