gpt4 book ai didi

c - 给数组中的char赋值

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:34 24 4
gpt4 key购买 nike

我正在努力复习我的 C/C++,但我似乎忘记了如何正确操作 char 数组。

代码:

#include <iostream>
#include <string.h>

void reverse(char* str)
{
int numChar = strlen(str);
char *reversed = (char*)malloc(sizeof(char) * (numChar + 1));

int i = numChar;
int j = 0;
while(i >= 0)
{
reversed[j] = str[i];
j++;
i--;
printf("%c", reversed[j]);
}

printf("%s", reversed);
}

int main()
{
char* str;
strcpy(str, "apple\0");
reverse(str);
return 0;
}

我很确定我没有按照我打算用 reversed[j] = str[i] 做,因为 reversed 结果是空的。正确的做法是什么?

最佳答案

乍一看,在main()中,内存必须先分配给字符指针str,然后才能在strcpy中引用它

int main()
{
char* str = malloc(6) or use char str[6];
// or char *str = "apple"; is sufficient, strcpy is not required in this case
strcpy(str, "apple\0");
reverse(str);
return 0;
}

另一个:在 reverse() 函数中,您必须在打印后增加 j

while(i >= 0)
{
reversed[j] = str[i];
printf("%c", reversed[j]);
j++; //Moved here
i--;
}
reversed[j] = '\0' //Null termination

printf("\n %s", reversed);

或者仅以下两个语句就足以发布递增 j 和递减 i

reversed[j] = str[i--];
printf("%c", reversed[j++]);

关于c - 给数组中的char赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com