gpt4 book ai didi

c++ - 反转一个词 : C++

转载 作者:行者123 更新时间:2023-11-28 02:28:00 25 4
gpt4 key购买 nike

我想在 C++ 中反转一个 char 字符串。我写了这段代码:

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

using namespace std;

int main(){
char word[80] = "polymorphism";
char rev[80];
int i, j;
int l;
l = strlen(word);
for(i = 0, j = l; i < l-1; i++, j--){
word[j] = rev[i];
}
cout << rev << endl;
return 0;
}

在终端中它显示了一些像这样的字符:

83???uH??? ... Something like this

最佳答案

您的字符数组 rev 不是零终止的。

不是写给 rev,而是写给 word。:)

    word[j] = rev[i];

由于条件的原因,循环也是错误的

i < l-1;

必须有

i < l;

程序可以如下所示

#include <iostream>
#include <cstring>

int main()
{
char word[80] = "polymorphism";
char rev[80];

size_t n = std::strlen( word );

size_t i = 0;
for ( ; i < n; i++ ) rev[i] = word[n - i - 1];
rev[i] = '\0';

std::cout << word << std::endl;
std::cout << rev << std::endl;

return 0;
}

程序输出为

polymorphism
msihpromylop

考虑到您可以使用标准算法来做同样的事情 std::reverse_copy在 header 中声明 <algorithm> .例如

#include <iostream>
#include <cstring>
#include <algorithm>

int main()
{
char word[80] = "polymorphism";
char rev[80];

size_t n = std::strlen( word );

*std::reverse_copy( word, word + n, rev ) = '\0';

std::cout << word << std::endl;
std::cout << rev << std::endl;

return 0;
}

程序输出同上

polymorphism
msihpromylop

关于c++ - 反转一个词 : C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867428/

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