[英]CPP access violation Error
我不断收到此错误: 0x40496a处的访问冲突:写地址0x0。 我正在使用Borland C ++。
这是我的源代码。
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int main()
{
char *nm;
cout<<"\n Enter a name: ";
gets(nm);
cout<<"\n Name: "<<nm;
getch();
return 0;
}
即使我设置了char * nm = NULL或使用cin >>作为输入,我也会遇到相同的错误。 请帮助,谢谢。
当您声明nm
您无需初始化它,这意味着nm
的值是不确定的,它实际上并未指向任何地方(实际上,它指向一个看似随机的位置)。 您需要使其指向足以容纳您输入的字符串的东西。
使用未初始化的变量和NULL
指针会导致未定义的行为,其最常见的结果是崩溃。
要解决此问题,请使其指向已初始化的数组:
char str[20];
char* nm = str;
或动态地为字符串分配内存:
char* nm = new char[20];
甚至更好的是,不要使用字符指针作为字符串, 尤其 不要使用gets
函数(这很危险,甚至已经从C标准中删除),而应使用C ++ std::string
类和std::getline
函数来获取一条线:
std::string nm;
std::getline(std::cin, nm);
或者,如果您只想获取一个以空格分隔的单词,请使用常规输入运算符:
std::string nm;
std::cin >> nm;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.