复制指针字符不按预期工作

时间:2013-08-07 19:08:52

标签: c eclipse string pointers mingw

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

上中断
*start = *end;

我在调试模式下验证了* start和* end的值,且none都为null。

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--;
        }
    }
}

任何提示/想法?

1 个答案:

答案 0 :(得分:3)

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

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

虽然Adam和Kerrek指出你需要为你的代码添加更多的错误检查,但这应该可以解决你的问题。