C++编程分配程序以信号11终止

C++ programming assignment program termiate with signal 11

本文关键字:信号 终止 程序 编程 分配 C++      更新时间:2023-10-16

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

然后,编写一个主函数,该函数接受用户的字符串作为输入,并打印反转的字符串(使用上面的函数)。所有输入字符串的长度不超过100个字符。

必须使用指针反转数组。

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

代码正确。当我手动操作时,它可以包括所有字符。只是不知道我为什么要提交测试,它会错过最后一个字符。以下是错误消息:[https://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;
}

感谢您的帮助!

  char str[100] = " ";

^^初始化是可选的

或者替代地。。。

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

这也可以,但我不推荐,c++还具有其他类型的铸造

char* str = new char[100];

另一种写法是,确保使用删除操作符

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