【发布时间】:2018-08-01 14:34:10
【问题描述】:
我有这个程序:
#include<stdio.h>
void copy_string(char string1[], char string2[]){
int counter=0;
while(string1[counter]!='\0'){
string2[counter] = string1[counter];
counter++;
}
string2[counter] = '\0';
}
int main() {
char* myString = "Hello there!";
char* myStringCopy;
copy_string(myString, myStringCopy);
printf("%s", myStringCopy);
}
我的问题是,除非我将 myStringCopy 声明为固定大小的变量 (char myStringCopy[12];),否则它为什么不起作用?如果我在复制后添加一个\0 字符,它不应该工作吗?
【问题讨论】:
-
问题是没有为
myStringCopy分配空间。它只是一个未指向有效内存位置的单元化指针,因此您不能对其进行写入。