我正在尝试使用指针和char反转此字符串,但是我得到的输出缺少第二个字符,并且找不到原因。像在以下情况下,我遗漏了单词B。
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
int size = 100;
char oldText[size];
char newText[size];
char *pntr;
pntr = oldText;
cout << "Write the Text: \n";
for (int i=0; i<size; i++)
{
cin.get(pntr,size);
newText[i]=*pntr;
cout << *pntr;
pntr++;
}
cout << "The text backwards is: \n";
for (int i = size; i>=0; i--)
{
pntr--;
cout <<newText[i];
}
cout <<endl;
return 0;
}
答案 0 :(得分:0)
此处的代码不是有效的C ++。
int size = 100;
char oldText[size];
char newText[size];
您正在使用无效的C ++代码的VLA。阅读此答案以获取更多信息https://stackoverflow.com/a/54674671/7185790。
相反,您可以用int size
来使constexpr
合格,没关系。
constexpr int size = 10;
请参见以下不使用char指针的示例:https://rextester.com/AEULY24804
请参见以下使用char指针的示例:https://rextester.com/FNPW17676