将 strcpy() 与指向 cstring 的指针一起使用时出现分段错误
Segmentation fault when using strcpy() with pointer to cstring
int main(int argc, char* argv[]){
// checked for right number of arguments
// reading pack name
char* filename[MAX_STR_LEN];
strcpy(*filename, argv[1]); // seg fault here
}
char* filename[MAX_STR_LEN];
它声明了一个指针数组,并且不会初始化它们以指向任何内容。取消引用它们会产生未定义的行为;如果幸运的话,这是一个分段错误。
您可能打算声明一个字符数组来包含字符串:
char filename[MAX_STR_LEN];
strcpy(filename, argv[1]);
现在你只需要确保数组足够大;或者停止使用低级C工件,改用std::string
。
char filename[MAX_STR_LEN] // without the *
strcpy(filename, argv[1]); // without the *
更好(避免堆栈溢出!(哈哈):
strncpy( filename, argv[1], sizeof(filename)-1 );
filename[ sizeof(filename)-1 ] = 0;
1) 文件名是一个 *char 数组。 我不确定这就是你想做的。 你可能想要拥有
char filename[FOO];
2) strcpy 需要 a (char *, const char *),您正在传递它,但这里没有为您分配的空间,请参阅 (1)
它应该是
char filename[MAX_STR_LEN];
.
.
strcpy(filename, argv[1]);
或者更好
snprintf(filename, sizeof(filename), "%s", argv[1]);
相关文章:
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 与clang++一起使用的VS代码在构建良好的C++文件中显示错误
- MSVC __debugbreak() 与 openGL 错误回调一起使用时不会产生调用堆栈
- boost::interprocess::file_lock 与 std::ostream 一起使用时的错误行为
- 为什么使用与父级声明的 std::function 在与子级一起使用时会显示错误?
- 将 std::variant 与 gmock 1.8 对象一起使用时编译错误
- 为什么当我尝试将priority_queue与参数一起使用作为指向结构的指针时会弹出错误
- 在Visual Studio中,与std::async一起使用时不调用"thread_local"变量"析构函数,这是一个错误吗?
- 与unordered_map向量一起使用的最小示例中的scoped_allocator_adaptor错误
- 将 int 与字符串和 getline 一起使用,没有错误
- Intelmpi错误(与OpenMPI一起使用)
- 在 c++ 中将模板与类一起使用时,类成员函数的答案错误?
- 在将QT与Cmake一起使用时解决链接错误
- 尝试将Winelib与标准macOS构建工具一起使用:得到奇怪的编译器错误
- 与类一起使用时 std::reference_wrapper "has no member named" 编译错误
- 与lambda一起使用虚拟继承在初始化列表中捕获此问题的GCC错误
- 可能的 GCC 链接器错误会导致将弱符号和局部符号链接在一起时出错
- 使用C和C 一起使用函数错误的不确定引用
- 将shared_ptr与指向指针的指针一起使用时出现编译器错误
- 将“getopt_long”与无法识别的长选项一起使用时出现分段错误