<分区>
我有两个版本的 C 代码。第一个有效,但第二个无效。
第二个的输出是段错误,但我不知道为什么。
也许有人可以解释我的错误?我真的很感激。
这有效:
#include <stdio.h>
#include <stdlib.h>
void stringcpy(const char*, char*);
int main() {
const char * original = "C is fun.";
int size = sizeof(original) / sizeof(char*);
copy = (char*)malloc(sizeof(char) * 11 + 1);
stringcpy(original, copy);
printf("%s\n", copy);
free(copy);
return 0;
}
void stringcpy(const char* original, char* copy) {
int i;
for(i = 0; *(original + i) != '\0'; i++) {
*(copy + i) = *(original + i);
}
*(copy + i) = '\0';
}
这行不通:
#include <stdio.h>
#include <stdlib.h>
void stringcpy(const char*, char*);
int main() {
const char * original = "C is fun.";
char * copy;
stringcpy(original, copy);
printf("%s\n", copy);
free(copy);
return 0;
}
void stringcpy(const char* original, char* copy) {
int size = sizeof(original) / sizeof(char*);
copy = (char*)malloc(sizeof(char) * size + 1);
int i;
for(i = 0; *(original + i) != '\0'; i++) {
*(copy + i) = *(original + i);
}
*(copy + i) = '\0';
}