【发布时间】:2021-12-30 23:11:28
【问题描述】:
这是一个奇怪的具体问题,但我需要帮助,因为我很困惑。我正在尝试使用指针来要求用户输入一个字符串,并且输出将打印相反的内容。到目前为止,我已经使用了反向函数并应用了指针。下面是代码现在的样子:
#include <iostream>
using namespace std;
void reverse(char name[])
{
char *p;
p = name;
while (*p != '\0')
{
++p;
}
while (*p >= 0)
{
cout << *p;
--p;
}
}
int main()
{
char name[100];
cout << "Please enter a string: ";
cin.getline(name, sizeof(name));
cout << "The reverse of the string is: ";
reverse(name);
return 0;
}
当我运行程序时,它可以工作,但有一个问题。例如输入的字符串是Stack Overflow,结果如下:
Please enter a string: Stack Overflow
The reverse of the string is: wolfrevO kcatS ►☺ ◄ a
如您所见,最终输出中出现了这些符号。我尝试找到它的来源,我认为这是因为指针,因为当我为函数使用数组时,它正确打印了没有符号的反转字符串。我在问是否有办法在仍然使用指针的同时删除这些符号?我已经尝试过使用指针创建函数的多种变体,但符号仍然打印在最后。
【问题讨论】:
-
你希望
while (*p >= 0)做什么? -
char *p; p = name;应该写成char *p = name;。代码也可以只使用name,而不是创建本地指针。 -
@Beta 我原以为它会满足字符串反向打印的条件,但正如其他答案所指出的那样,这就是我的错误所在。