c++ - C++ 中的 Cstring - 使用标准 C 函数导致段错误

标签 c++ c-strings

<分区>

对于某些函数,我想在函数中创建一个字符串的拷贝,然后对其进行操作 - 出于某种奇怪的原因,我无法让 strcpy 工作(给我一个段错误) - 我也尝试过传递 arg作为一个字符串,这也不起作用(g++ 抛出一个错误,说它需要一个 char*)

#include <iostream>
#include <cstring>

using namespace std;
void copy_string(char* stri);

int main ()
{
  copy_string("sample string");

  return 0;
}

void copy_string(char* stri) {
  char* stri_copy;

  strcpy(stri_copy, stri);

  cout << "String: " << stri_copy;

}

我不确定我明白为什么会这样。

所以我的两个问题是:

  1. 为什么会出现这种情况 - 是否有简单的解决方法?
  2. 创建传递给函数的字符串的本地拷贝的最简单/最有效的方法是什么?

谢谢!

最佳答案

 char* stri_copy;

 stri_copy = (char*)malloc(strlen(stri) * sizeof(char) + 1); 
 strcpy(stri_copy, stri);

您没有为 stri_copy 分配空间。

关于c++ - C++ 中的 Cstring - 使用标准 C 函数导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1970614/

相关文章:

c++ - Visual Studio 内存窗口只包含问号

c++ - 使用 boost::asio::io_service 作为类成员字段

c++ - 流 cout 设置标志 std::ios_base::skipws 有什么原因吗?

C++ 递归变量

c - 在字符串连接时在我的程序中出现段错误

c - C语言中Printf和Strcpy的Bug

c - 数组元素被反向打印出来

用于创建字符串数组的 C++ 宏

c - 为什么在写入使用字符串初始化的 "char *s"时会出现段错误,而不是 "char s[]"?

c - 递归删除字符串中的重复字符