【发布时间】:2019-01-27 16:35:15
【问题描述】:
将给定的char *input[] 转换为包含单个空格的行
输入:
int n =3;
char *result;
char *input[]= {"one", "two", "three" };
result = convertToLine(n, input)
代码
char *convertToLine(int n, char *input[]) {
int size = n* 2;
char* string = (char*)malloc(sizeof(char)*size);
int i = 0;
int k = 0;
while (i <size){
string[i] = *input[k];
string[i+1] = ' ';
i++;
k++;
}
string[n] = '\0';
return string;
}
我的输出: 空
预期输出:
result = "one two three"
【问题讨论】:
-
你的问题是?
-
问题是“为什么那个代码不起作用”^^
-
嗯,n = 3 => size = 6。
string将是一个大小为 6 的 char 数组。最终数组中将有超过 6 个字符,这是肯定的。 (作为最初的错误)。 -
调试器有助于找出您的程序为何如此运行。如果您还不知道如何使用调试器,那么这看起来是一个很好的程序,可以在您学习基础知识时使用。
-
@Sanjana 在 C 中你没有字符串,你有字符数组。
string[i] = *input[k];不会从“字符串”中的输入中复制第 k 个字符串,它只会复制一个字母。此外,string只有 6 个字符的空间,您需要 3 + 3 + 5 + 2(来自空格)+ 1(来自 NULL 终止符)= 13。` 不使用库函数` => 你还需要一个函数获取每个单词的长度,否则您将不得不多次重新分配缓冲区。