因此,此代码从用户处获取输入并显示逐字符剥离,如下面的示例所示。然而。这段代码中存在语法和逻辑错误,我试图解决这些问题已有好几天了,但它并没有与我合作:
#include <iostream>
using namespace std;
int main()
{
char name[20];
char* ptr1,*ptr2;
cout << "Input a name -> ";
cin >> name;
cout << "Output : ";
for (ptr1 = &name; ptr1 != '0'; ptr1++) {
for (ptr2 = &ptr1; ptr2 != '0'; ptr2++) {
cout << *ptr2;
cout << ' ';
}
}
}
示例运行:
输入名称 - &gt;约翰
输出:
John ohn hn n
答案 0 :(得分:0)
建议您使用调试器进行调试。像
这样的问题数量ptr1 != '0'
应为*ptr1 != '\0'
作为您的循环失败的一个阶段&amp;它通过比较该地址的值(* ptr)而不是通过比较地址(ptr)来实现。ptr1 = &name
中的ptr1 = name
以下是您可能需要的代码
for (ptr1 = name; *ptr1 != '\0'; ptr1++) {
for (ptr2 = ptr1; *ptr2 != '\0'; ptr2++) {
cout << *ptr2;
}
cout << ' ';
}
答案 1 :(得分:0)
您需要稍微更改两个for循环,
for (ptr1 = name; *ptr1 != '\0'; ptr1++)
{
for (ptr2 = ptr1; *ptr2 != '\0'; ptr2++)
您试图将指针的地址与零进行比较。
希望它对你有所帮助。
答案 2 :(得分:0)
看起来你的意思如下。
#include <iostream>
int main()
{
const size_t N = 20;
char name[N] = {};
std::cout << "Input a name -> ";
std::cin.get( name, sizeof( name ) );
std::cout << "Output : ";
for ( const char *p = name; *p != '\0'; ++p )
{
std::cout << p << ' ';
}
std::cout << std::endl;
return 0;
}
程序输出可能看起来像
Input a name -> John
Output : John ohn hn n