【发布时间】:2019-01-18 13:41:23
【问题描述】:
我正在尝试创建一个函数,它将接收一个字符串数组和大小,并将返回一个由每个单词的最大 ASCII 值字母组成的字符串,并且字符串的大小必须精确,我' m 不允许使用运算符 [](这是我的主要问题)。
所以:
char *strArr[SIZE] = { "hello", "and", "good", "morning" };
该函数应返回一个带有单词的字符串
“上”
.
所以我想到了创建一个双 for 循环,第一个将引导我进入数组中每个单词的位置,而里面的一个将帮助我遍历每个单词。
目前,我无法使用指针找到正确的格式来实际遍历我的第一个单词的字母。
我知道我没有检查我的内存分配是否有效,也没有释放我的内存,因为我想先找出问题所在。
char *bigLetters(char *str[], int size)
{
char *strNew = (char *)malloc((size + 1) * sizeof(char));
char max = 'a';
for (int i = 0; i < size; i++)
{
for (int j = 0; (*(str + i)+j) != NULL; j++)
{
if ((*(str + i) + j) >= max)
{
max = (*(str + i) + j);
}
}
*(strNew + i) = max;
}
*(strNew +(size+1)) = NULL;
return *(strNew);
}
void main()
{
char *strArr[SIZE] = { "hello", "and", "good", "morning" };
char *res = bigLetters(strArr, SIZE);
printf("The new string is --> %s\n", res);
system("pause");
}
【问题讨论】:
-
str[i][j]比你正在做的更具可读性 -
@ChrisTurner 我不允许在编写此代码时使用 [] 运算符。
-
@Shames 真的吗?你有这样的“编码规则”吗? !
-
@bruno 是的,这是一项家庭任务。如果我可以使用 [ ],我认为我的内部“for”循环不会有问题
标签: c arrays string function pointers