过去几个小时我遇到了一个问题,虽然我明白了。 这是我的麻烦:
void cut_str(char* entry, int offset) { strcpy(entry, entry + offset); } char works[128] = "example1 "; char* doesnt = "example2 "; printf("output:n"); cut_str(works, 2); printf("%sn", works); cut_str(doesnt, 2); printf("%sn", doesnt); // output: // ample1 // Segmentation: fault
我觉得char * / char []有一些重要的东西,我没有来到这里。
不同之处在于,它doesnt
指向属于字符串常量的内存,因此不可写。
当你这样做
char works[128] = "example1 ";
编译器将不可写字符串的内容复制到可写数组中。 顺便说一下,