反向字符串函数给了我一个分段错误
Reverse string function gives me a segmentation fault
我正在复习我的C/C++技能。我试图实现一个反转字符串的函数,但每次运行程序时我都会收到分段错误(核心转储)。
#include <stdio.h>
#include <string.h>
void revstr(char *str);
int main()
{
char *str = "hello mofo!";
revstr(str);
puts(str);
return 0;
}
void revstr(char *str)
{
int start = 0;
int len = strlen(str);
int mid = len / 2;
int i, t;
printf("start: %d, mid: %d,len: %dn", start, mid, len);
for ( i = start; i < mid; ++i )
{
printf("str[%d] swapping to str[%d]: %c, %cn", i, len - 1 -i, str[i], str[len - 1 - i]);
t = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = t;
}
}
这个解决方案也给了我同样的 seg 错误:
#include <stdio.h>
#include <string.h>
void revstr(char *str);
int main()
{
char *str = "hello mofo!";
revstr(str);
puts(str);
return 0;
}
void revstr(char *str)
{
char *end = str;
char t;
if ( str )
{
while ( *end != 0 )
end++;
end--;
while ( str < end )
{
t = *str;
*str++ = *end;
*end-- = t;
}
}
}
char *str = "hello mofo!";
str
是字符串文字,默认为 const
,更改它是未定义的行为,您需要这样做:
char str[] = "hello mofo!";
相关文章:
- 试图修复一个错误,该错误不会让我开始编程其余部分
- MSVC 无法根据模板参数进行数学运算,这是一个错误吗?
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 零四元数和任何向量都不为零的特征积,这是一个错误吗?
- 处理程序的模块列表中有一个错误的模块"WebSocketModule"
- 在 C++ 中使用 "transform" 会给出一个错误,指出这未在作用域中声明
- 在Cython中使用C库时,我遇到了一个错误
- 我需要帮助创建一个评分系统,但它一直给我一个错误,注释掉的整数是给我带来麻烦的部分
- 我试图用c++编写递归fibonacci序列,但当我编译时,我遇到了一个错误
- 从system()调用G++会返回一个错误
- 在Visual Studio中,与std::async一起使用时不调用"thread_local"变量"析构函数,这是一个错误吗?
- 我收到一个错误无效的操作数,类型为 const char [42] 和二进制"运算符+"的双倍数
- 使用声明:GCC 和 Clang 的另一个错误?
- 全球免费给出一个错误.调试器不解释
- 相对于继承的构造函数,gcc 编译器是否还有一个错误?
- 为什么直接传递"this"指针来存档是一个错误,而另一个相同类型的指针是可以的?
- 为什么第三板有一个错误
- 如何编写一个错误结构,该结构可以包含不同的强键枚举作为错误代码
- 使用本地类型声明的G lambda被使用但从未定义 - 确实是一个错误
- 我需要在 Android Studio 中构建 NDK. 但它返回一个错误