在 C 中创建字符串数组
Creating an Array of Strings in C
我在使用命令行界面时遇到了这个问题。
我正在尝试将输入存储在一个字符串数组中。但是当我 运行 我的代码
我遇到分段错误?
#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]。
我在使用命令行界面时遇到了这个问题。 我正在尝试将输入存储在一个字符串数组中。但是当我 运行 我的代码 我遇到分段错误?
#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]。