C++:0xC0000005:访问违规写入位置0x00000000
C++: 0xC0000005: Access violation writing location 0x00000000
我想知道是否可以在我的程序上得到一些帮助。如标题中所述,我的程序存在访问冲突。我意识到它与取消引用垃圾指针有关,而且我很确定我已经缩小了它中断的行,我只是不确定它为什么实际上会中断,以及如何修复它。代码如下:
void determineInputType(char input[kMaxUserInput])
{
char* flag = NULL;
if (*(flag = strchr(input, '.')) != NULL)
{
double grade = 0;
if ((sscanf(input, "%lf", grade)) == 1) // problem is on this line
{
//rest of the code continues here
我如何获得输入在这里:
void getUserInput(char* userInput)
{
printf("Enter a student's grade: ");
fgets(userInput, kMaxUserInput, stdin);
clearCRLF(userInput);
}
最后是主要的:
int main(void)
{
char userInput[kMaxUserInput] = { 0 };
getUserInput(userInput);
determineInputType(userInput);
return 0;
}
对此的任何帮助将不胜感激,因为它已经困扰了我一段时间。非常感谢您的时间,如果还有其他我需要发布的内容,请告诉我。
scanf
系列要求您提供指向要填充的值的指针:
if ((sscanf(input, "%lf", &grade)) == 1) // problem is no longer on this line
你拥有它的方式,你grade
设置为零,然后使用它作为指针。
标准的相关部分(C++11 遵循的 C99)7.19.6.2 /12
(我的粗体):
a,e,f,g
- 匹配可选带符号的浮点数、无穷大或NaN
,其格式与strtod
函数的主题序列的预期相同。相应的参数应是指向浮点数的指针。
l
(ell) - 指定...以下a
、A
、e
、E
、f
、F
、g
或G
转换说明符适用于类型为双精度的参数;
相关文章:
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- OPENCV.3.0错误:0xc0000005:访问违规读取位置0x00000000
- 在为矩阵分配值时访问冲突写入位置0x00000000
- 访问违规写作位置0x00000000在阅读/写入向量时
- OpenGL:glDrawArrays()引发异常(nvoglv32.dll)读取位置0x00000000时发生访问冲突
- NVIDIA 在 <work.exe>0xC0000005 中0x002a2da2未处理的异常:访问违规读取位置0x00000000
- 访问冲突写入位置0x00000000.C++/SFML游戏
- 0xC0000005:访问违规读取位置0x00000000
- IXAudio2 - 0xC0000005:访问冲突写入位置0x00000000
- 0xC0000005:访问冲突读取位置0x00000000哈希函数
- 填充数组(写入位置0x00000000的访问冲突)
- DirectX11 网格加载 - 由于纹理而出错(使用 SDKmesh.h)?访问违规读取位置0x00000000
- C++:0xC0000005:访问违规写入位置0x00000000
- 未处理的异常 - 访问冲突读取位置0x00000000
- 访问冲突写入位置0x00000000.内存集函数问题
- 0xC0000005:访问违规读取位置0x00000000
- 访问二叉搜索树中的违规读取位置0x00000000
- 未处理的异常:写入位置0x00000000时发生访问冲突
- 0xC0000005中0x6ececafa处出现未处理的异常:写入位置0x00000000的访问冲突
- c++写入位置0x00000000时发生访问冲突