0

我一直在使用 Stroustrup 的 C++ 编程语言,但我在早期练习时遇到了困难。任务是构建一个反转 ac 样式字符串的方法 rev。我认为我的逻辑是正确的,但是当我尝试修改字符串时出现错误。我不能这样做吗?

int strlen_(char* string)
{
    int count = 0;
    while (*string != '\0'){
        count ++;
        string ++;
    }

    return count;
}

void rev(char* string)
{
    //length of the string is going to be useful 
    int len = strlen_(string);

    //two counters, one going forward, one going back

    int forwardIndex = 0;
    int backwardIndex = len-1; 

    char temp;
    while (forwardIndex < backwardIndex){
        temp = string[forwardIndex];
        string[forwardIndex] = string[backwardIndex];   //Exception Here
        string[backwardIndex] = temp;
        forwardIndex--;
        backwardIndex--;
    }

}

void main()
{
    char* test = "test"; 
    rev(test);
}
4

2 回答 2

5

您不能修改文字字符串,并且您的 reverse 函数会修改它的字符串参数。

通过传递类似的东西来测试你的反向函数:

void main()
{
    char test[] = "test";
    rev(test);
}

这将"test"在您可以修改的数组中复制文字字符串。

此外,你正在减少forwardIndexbackwardIndex: 你应该增加 forwardIndex: forwardIndex++。这个想法是指数将在中间相遇。

于 2012-10-17T19:15:53.093 回答
0

似乎您正在减少 forwardIndex。第一次运行后它将是-1。查找forwardIndex--;并更改为forwardIndex++;

于 2012-10-17T19:19:35.480 回答