0

在下面的代码中,我做错了什么?我在 Eclipse 中运行代码并使用 MinGW C 编译器。当我运行它时,eclipse停止响应。当我调试代码时,它会中断

*start = *end;

我在调试模式下验证了 *start 和 *end 的值,没有一个为空。

void func1(char *str)
{
    char *end, *start;
    end = start = str;
    char tmp;

    if (str)
    {
        while (*end)
            ++end;
        --end;

        while (start < end) 
        {
            tmp = *start;
            *start = *end;
            *end = tmp;

            start++;
            end--;
        }
    }
}

任何提示/想法?

4

1 回答 1

3

因此,根据您的反馈,您正在传递一个字符串文字"Hello World"to func1,修改字符串文字是未定义的行为,您也可以使用类似这样的东西,它会起作用:

char arr1[] = "hello world" ;
func1(arr1) ;

尽管正如 Adam 和 Kerrek 指出的那样,您需要在代码中添加更多错误检查,但这应该可以解决您的直接问题。

于 2013-08-07T19:46:08.240 回答