gpt4 book ai didi

c++ - 用指针反转字符串 C++

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:51 29 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why do I get a segmentation fault when writing to a string?

我想写一个简单的 C++ 函数来反转string/char[] 仅通过指针运算。我理解这个概念并且已经输入了代码。

我有以下 .cpp 文件:

#include <iostream>
using std::cout;
using std::endl;

void reverse(char* target) //Requirements specify to have this argument
{
cout << "Before :" << target << endl; // Print out the word to be reversed
if(strlen(target) > 1) // Check incase no word or 1 letter word is placed
{
char* firstChar = &target[0]; // First Char of char array
char* lastChar = &target[strlen(target) - 1]; //Last Char of char array
char temp; // Temp char to swap
while(firstChar < lastChar) // File the first char position is below the last char position
{
temp = *firstChar; // Temp gets the firstChar
*firstChar = *lastChar; // firstChar now gets lastChar
*lastChar = temp; // lastChar now gets temp (firstChar)
firstChar++; // Move position of firstChar up one
lastChar--; // Move position of lastChar down one and repeat loop
}
}
cout << "After :" << target << endl; // Print out end result.
}

void main()
{
reverse("Test"); //Expect output to be 'tseT'
}

我已经在调试器中调试了好几次,但每次都在 while 循环中的 temp = *firstChar 行附近崩溃。它在这里卡住并导致程序停止运行并且无法结束。有什么我只是忽略了还是有关于为什么我不能这样做的更深层次的原因。

编辑: 有一个 else 条件,但为了简洁。它在 if 语句之后,它只是提示字为 1 个字符或未输入任何字。

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