用信号11编程的C++程序分配程序

用信号11编程的C++程序分配程序,c++,C++,下面是赋值:编写一个函数,将char数组作为输入参数并反转字符串。该函数应使用两个指针,前指针和后指针。前指针应首先引用字符串中的第一个字符,后指针应首先引用字符串中的最后一个字符。通过交换前面和后面引用的字符来反转字符串,然后向前递增以指向下一个字符,向后递减以指向前一个字符,依此类推,直到整个字符串反转 然后,编写一个主函数,该函数接受一个字符串作为用户的输入,并使用上述函数打印反转的字符串。所有输入字符串将不超过100个字符 必须使用指针反转数组 如果使用不需要的动态数组,则必须在程序结束

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

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

必须使用指针反转数组

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

代码是正确的。当我手动执行此操作时,它可以包含所有字符。只是不知道为什么我提交测试,它会错过最后一个字符。以下是错误消息:[

这是我的密码:

#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操作符

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

我的问题是:当我手动操作时,它可以包含所有字符。只是不知道为什么我提交测试,它将错过最后一个字符。你的代码唯一的错误是缓冲区溢出问题,你现在编辑了这个问题。那么我如何解决这个问题?你通知讲师了吗?:为什么不使用std::sting str;而不是char str[101]请你不要告诉我,但是我的教授限制了你的错误,在这个案例中跳过这个课程,试着找一个真正教你C++的人。ῥεῖ: 这一切都很好,但这并不能解释为什么网站会在没有错误的情况下显示错误。这门课程似乎…说得委婉一些,很奇怪,但我想他必须接受它。像其他一些人一样,在类似的课程中遇到过类似的问题,可能也是一样。我现在已经看到过几次这样的输出。FWIW,你的代码运行得很好关于ideone:。@RudyVelthuis:是的,所以我试图给教授发电子邮件,看看发生了什么。@πάνταῥεῖ: 一个人不能总是跳过一门课程。好吧,我学的是牙科,不是它,但跳过或不通过一门课程不是一个选项。我想这在许多其他大学和其他学院都是类似的。我儿子学习土木工程也不能跳过他的课程,尽管他或多或少可以选择他上的学期。