试图反转 C 字符串
Trying to reverse a C string
除了strlen()
,我不能使用任何c函数,我也不能使用字符串。不幸的是,我已经在这上面待了很长时间。作为输出的一部分,我不断收到奇怪的字符。即问号和本质上奇怪的替代代码就是它的样子。
#include <iostream>
#include <cstring>
using namespace std;
int lastIndexOf(const char*, char[]);
void reverse(char*);
int replace(char*, char, char);
int main() {
int i = 0, count = 0, counter = 0, SIZE = 100;
char charArray[SIZE];
cout << "Enter a string of no more than 50 characters: ";
cin.getline(charArray, SIZE);
reverse(charArray);
}
void reverse(char s[])
{
int n = 100;
for (int i = 0; i < n / 2; i++) {
swap(s[i], s[n - i - 1]);
cout << (s[i]);
}
}
我尝试了几种不同的方法,swap
函数,使用指针手动将它们与临时变量交换。所以我去网上看看其他人是怎么做的,但是没有用。我相信有一个简单的解决方案。
函数使用幻数 100
int n = 100;
虽然在main中有提示输入不超过50个字符
cout << "Enter a string of no more than 50 characters: ";
您需要使用标准C函数计算传递的字符串的长度strlen
。
函数可以看成下面的样子
char * reverse( char s[] )
{
for ( size_t i = 0, n = std::strlen( s ); i < n / 2; i++ )
{
std::swap( s[i], s[n-i-1] );
}
return s;
}
注意变长数组不是标准的 C++ 特性。
你应该写
const size_t SIZE = 100;
char charArray[SIZE];
除了strlen()
,我不能使用任何c函数,我也不能使用字符串。不幸的是,我已经在这上面待了很长时间。作为输出的一部分,我不断收到奇怪的字符。即问号和本质上奇怪的替代代码就是它的样子。
#include <iostream>
#include <cstring>
using namespace std;
int lastIndexOf(const char*, char[]);
void reverse(char*);
int replace(char*, char, char);
int main() {
int i = 0, count = 0, counter = 0, SIZE = 100;
char charArray[SIZE];
cout << "Enter a string of no more than 50 characters: ";
cin.getline(charArray, SIZE);
reverse(charArray);
}
void reverse(char s[])
{
int n = 100;
for (int i = 0; i < n / 2; i++) {
swap(s[i], s[n - i - 1]);
cout << (s[i]);
}
}
我尝试了几种不同的方法,swap
函数,使用指针手动将它们与临时变量交换。所以我去网上看看其他人是怎么做的,但是没有用。我相信有一个简单的解决方案。
函数使用幻数 100
int n = 100;
虽然在main中有提示输入不超过50个字符
cout << "Enter a string of no more than 50 characters: ";
您需要使用标准C函数计算传递的字符串的长度strlen
。
函数可以看成下面的样子
char * reverse( char s[] )
{
for ( size_t i = 0, n = std::strlen( s ); i < n / 2; i++ )
{
std::swap( s[i], s[n-i-1] );
}
return s;
}
注意变长数组不是标准的 C++ 特性。
你应该写
const size_t SIZE = 100;
char charArray[SIZE];