为什么这会引发细分错误?
我已经调试了程序,直到出现错误?有人可以解释为什么吗?
char code1[] = "abcdefghijklmnopqrstuvwxyz ";
char code2[] = "bpduhijkaltxwmrzfoysvngeqc ";
void code(char *encode[]){
char encoded[strlen(encode)];
strcpy (encoded, encode);
int i = 0;
int j = 0;
while (encode[i] != '\0'){
while(encode[i] != code1[j]){
j++;
}
encoded[i] = code2[j];
i++;
j=0;
}
i=0;
printf("The word is: %s \n", encoded);
}
最佳答案
您不在结果字符串中包含空字节'\0'
。 C字符串以'\0'
字符结尾,该字符不包含在长度中:
char encoded[strlen(encode)+1];
strcpy(encoded, encode);
另外,您还需要检查以确保
encode
中的每个字符也都在code1
中,否则,您将访问code
之外的数据。您可以添加code1[j] == '\0'
的检查并跳过该字符。您还应该查看strchr
函数来搜索字符,而不要自己动手。