c ++:在给定的char*中写一个char导致segfault

0 c++ char segmentation-fault

我想将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,我实际写入的地址与我分配数据数组的地址完全相同.我已多次测试过.

提前致谢.

Sve*_*ven 7

字符串文字是只读的.如果需要可修改的字符串,则必须使用数组,例如:

char data[10];
Run Code Online (Sandbox Code Playgroud)

要么:

char *data = new char[10];
Run Code Online (Sandbox Code Playgroud)

详细说明:字符串文字的类型实际上是const char*.因此,将字符串文字分配给非const char*在技​​术上是无效的,但是大多数编译器仍然会因遗留原因而允许它.当你尝试这样做时,许多现代编译器至少会发出警告.