首页 > 解决方案 > 输出混乱

问题描述

输出不应该是:Heo Word?因为只要它们不是“l”它就会打印字母,但我得到的输出是:eo World?

   #include <iostream> 
   using namespace std; 
   int main() {  
       char str[] = "Hello World\n";  
       char* p = str;   
       while ( *p++ ) {
           if ( *p != 'l' )       
               cout << *p;
       } 
   }

标签: c++arrayspointerschar

解决方案


循环条件中的代码while已经增加了指针值

while ( *p++ )

因此在循环范围内进行检查

if ( *p != 'l' )

总是错过第一个字符。

重写这个循环的最简单和最容易理解的方法可能是

 char str[] = "Hello World\n";  
 for (char*p = str; *p; ++p) {
     if ( *p != 'l' )       
         cout << *p;
 } 

在线工作示例


推荐阅读