C ++编程分配程序与信号11一起终止

时间:2016-07-30 23:44:26

标签: c++

这是赋值:编写一个函数,它将char数组作为输入参数并反转字符串。该功能应使用前后两个指针。前指针应该最初引用字符串中的第一个字符,后指针最初应该引用字符串中的最后一个字符。通过交换前后引用的字符来反转字符串,然后递增前面指向下一个字符,然后递减后面指向前一个字符,依此类推,直到整个字符串反转。

然后,编写一个main函数,它将一个字符串作为用户的输入并打印反转的字符串(使用上面的函数)。所有输入字符串都不超过100个字符。

您必须使用指针来反转数组。

如果使用动态数组(不需要),则必须在程序结束前删除分配给任何动态数组的所有内存。

代码是正确的。当我手动执行时,它可以包含所有字符。只是不知道为什么我提交测试,它会错过最后一个字符。以下是错误消息:[http://i.stack.imgur.com/Qukiw.png]

这是我的代码:

#include <iostream>
#include <cstdlib>
#include <cctype>
#include <string.h>

using namespace std;

void reverse(char *s);

int main()
{
char str[100] = "";

cout << "Enter string:" << endl;
cin.getline(str,100);

reverse(str);

cout << "The string reversed is:" << endl;
cout << str << endl;

return 0;
}

void reverse(char *s)
{
char *front, *rear, temp;

front = s;
rear = s + strlen(s)-1;
while (front < rear)
{

    temp = *front;
    *front = *rear;
    *rear = temp;

    front++;
    rear--;
}
return;
}

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:-1)

  char str[100] = " ";

^^初始化是可选的

或者......

char* str = (char*)malloc(sizeof(char) * 100);

这也可以,但我不推荐它,c ++还有其他类型的投射

char* str = new char[100];

只是您可以编写它的另一种方式,请确保使用删除操作符

delete[] str // if you use the new keyword