【发布时间】:2017-02-10 08:36:18
【问题描述】:
以下是我针对以下问题的代码。我正在尝试获取以逗号分隔的一串名字和一串姓氏,并将它们转换为全名列表。例如,如果firstnames = "John,Jane" 和lastnames = "Smith,Doe",那么输出应该是["John Smith", "Jane Doe"]。
我相信我的问题是在我使用 strtok 时出现的,因为 first_names[i] = name 给了我一个错误。对此的任何帮助将不胜感激!
char **combine_names(char *firstnames, char *lastnames) {
char first_names[50][50];
char last_names[50][50];
int i = 0;
char *name = strtok(firstnames, ",");
while (name != NULL) {
first_names[i] = name;
i++;
name = strtok(NULL, ",");
}
i = 0;
name = strtok(lastnames, ",");
while (name != NULL) {
last_names[i] = name;
i++;
name = strtok(NULL, ",");
}
char **names;
names = malloc(strlen(first_names) * sizeof(char*));
for (int i = 0; i < strlen(first_names); i++) {
names[i] = malloc(51 * sizeof(char));
}
int i = 0;
int j = 0;
int k = 0;
while (first_names[i] != '\0') {
while (first_names[i][j] != '\0') {
names[i][j] = first_names[i][j];
j++;
}
names[i][j] = ' ';
j++;
while (second_names[i][k] != '\0') {
names[i][j] = second_names[i][k];
j++;
k++;
}
names[i][j] = '\0';
i++;
}
names[i] = '\0';
return names;
}
以下行导致与第一个参数不兼容的指针错误。这是为什么呢?
names = malloc(strlen(first_names) * sizeof(char*));
【问题讨论】:
-
例如
first_names[i]是一个数组。你不能分配给一个数组,但你可以copy 给它。 -
And
first_names不是字符串,它不是你可以调用strlen并期望得到有效结果的东西。尝试真正阅读编译器给你的错误和警告。
标签: c arrays string split malloc