我遇到此问题,我在这里使用命令行界面。我试图将输入存储在字符串数组中。但是当我运行我的代码时我遇到细分错误?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int num, char **str) {
int i;
char owner[20];
char *keys[5];
int j = 0;
for (i = 1; i < num; i++) {
if (i == 1) {
strcpy(owner, str[i]);
printf("%s", owner);
}
else {
keys[i] = malloc(10 * sizeof(char));
strcpy(keys[j], str[i]);
printf("%s", keys[j]);
j++;
}
}
}
在else语句中,您应该写
else {
keys[j] = malloc( strlen( str[i] ) + 1 );
strcpy(keys[j], str[i]);
printf("%s", keys[j]);
j++;
}
此外,您还应提供足够的数组所有者以存储字符串str [1]。