【发布时间】:2017-08-27 08:17:01
【问题描述】:
我编写了一个 C++ 函数,可以表示如下: 它所做的只是获取一个字符串(这是它崩溃的地方)并将其反转。
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int main()
{
cout<<"Enter a string: "<<endl;
char *str;
gets(str);
cout<<"Reversed String is: ";
for(int i=strlen(str)-1;i>=0;i--)
cout<<(str[i]);
return 0;
}
我猜有某种内存访问冲突。
任何线索为什么这不起作用?
错误:分段错误(核心转储)
【问题讨论】:
-
char *str;- 你从不为字符串分配内存 -> 你调用 未定义的行为。如果您使用 C++ 编写,只需使用std::string而不是 C 样式的char数组。 (另外,std::gets在 C++ 中已被弃用,并在 C++14 中被删除) -
C++ 和 C 不是同一种语言。选择其中一个,然后尝试解决您的任务。
-
我删除了 C 标记,因为这显然是 C++
标签: c++ pointers nullpointerexception char