这是赋值:编写一个函数,它将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;
}
感谢任何帮助,谢谢!
答案 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