我想将char复制到给定char*指向的地址.
它位于main调用的函数中:
char data = " ";
myfunction(data, somethingelse);
...
Run Code Online (Sandbox Code Playgroud)
在功能里面,我有类似的东西
void myfunction(char* data, short somethingelse) {
...
char byte = 0;
inputfilestream.read(&byte, 1);
*data = byte; // here i get the segfault
data++;
...
}
Run Code Online (Sandbox Code Playgroud)
当我使用strncpy复制时,也会出现段错误:
strncpy(data, byte, 1);
Run Code Online (Sandbox Code Playgroud)
为什么会出现段错误?data不是const,我实际写入的地址与我分配数据数组的地址完全相同.我已多次测试过.
提前致谢.
字符串文字是只读的.如果需要可修改的字符串,则必须使用数组,例如:
char data[10];
Run Code Online (Sandbox Code Playgroud)
要么:
char *data = new char[10];
Run Code Online (Sandbox Code Playgroud)
详细说明:字符串文字的类型实际上是const char*.因此,将字符串文字分配给非const char*在技术上是无效的,但是大多数编译器仍然会因遗留原因而允许它.当你尝试这样做时,许多现代编译器至少会发出警告.