当我尝试创建用于连接字符串的函数时,我已经看到了一个问题,并且程序已经成功构建,没有编译时错误,但是当它运行时,我的程序崩溃了。但是,当我将代码直接写入int main()
时,程序运行顺利,没有错误
有没有人能解释一下?
导致程序崩溃的代码是:
...
inline char *concatStr(char *target, char *source){
return copyStr(_endOfStr(source), source);
}
int main(){
char hello[MAX] = "Hello ";
char world[MAX] = "World!!\n";
concatStr(hello, world); //create "Hello World!!\n" by adding "World!!\n" to end of "Hello "
cout << hello; //I want display "Hello World!!"
return EXIT_SUCCESS;
}
替换代码是:
...
int main(){
char hello[MAX] = "Hello ";
char world[MAX] = "World!!\n";
copyStr(_endOfStr(hello), world);
cout << hello;
return EXIT_SUCCESS;
}
功能char *copyStr(char *target, char *source)
覆盖target
并返回指向目标中null
的指针
函数char *_endOfStr(char *str)
返回在str
答案 0 :(得分:2)
您的崩溃代码上有拼写错误:
return copyStr(_endOfStr(source), source);
应该是
return copyStr(_endOfStr(target), source);
我现在手头没有C ++编译器,但是应该修复它。
答案 1 :(得分:-1)
由于使用c ++而不是C,因此请使用string而不是char *。
您的代码看起来应该像这样:
#include <string>
...
int main(){
std::string hello = "Hello ";
std::string world = "World!!\n";
std::string helloWorld = hello + world;
cout << helloWorld;
return EXIT_SUCCESS;
}