在下面的代码中,我做错了什么?我在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--;
}
}
}
任何提示/想法?
答案 0 :(得分:3)
因此根据您的反馈,您将字符串文字"Hello World"
传递给func1
,修改字符串文字是未定义的行为,您也可以使用类似的东西,它会起作用:
char arr1[] = "hello world" ;
func1(arr1) ;
虽然Adam和Kerrek指出你需要为你的代码添加更多的错误检查,但这应该可以解决你的问题。