char* 的C++问题。。。。。。。
有以下一段代码
#include <iostream>
using namespace std;
int main()
{
char strInputString[10] = {0};
char* strOutputString;
cout < < "请输入您的名字 " < < endl;
cin > > strInputString;
strcpy(strOutputString, "您的名字是: ");
strcat(strOutputString, strInputString);
cout < < strOutputString < < endl;
return 0;
}
请问上面的代码是否存在什么漏洞?如果有,请问如何改进。
(请仔细检查)
[解决办法]
char* strOutputString=(char *)malloc(255);
[解决办法]
改进的办法就是用C++里的string.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string strInputString;
cout < < "请输入您的名字 " < < endl;
cin > > strInputString;
string strOutputString( "您的名字是: ");
strOutputString += strInputString;
cout < < strOutputString < < endl;
return 0;
}
[解决办法]
char* strOutputString = new char[50];
[解决办法]
strOutputString 没有开空间啊
用楼上的string吧
[解决办法]
char* strOutputString;未指定内存指针
而且并未检查输入数据的有效性(长度之类)
[解决办法]
错误很明显了,就是char* strOutputString没有开空间.
1.开足够大的空间
2.用string
[解决办法]
1,没有分配内存
2,长度问题
[解决办法]
char* strOutputString没有分配空间。