1

这是我的代码,如果您输入“Ctrl+Z”,它应该会完成,但它会进入循环模式并重复写入最后一个单词。

#include <iostream>
using namespace std;
int main()
{  char word[80];
   do
   {  cin >> word;
      if (*word) cout << "\t\"" << word << "\"\n";
   }  while (*word);
}

通过按“Ctrl+Z”,这个简单的程序应该结束,但为什么它不以这种方式运行呢?它有什么问题?

看看这段代码:

{  char line[80];
   do
   {  cin.getline(line,80);
      if (*line) cout << "\t[" << line << "]\n";
   } while (*line);
}

它类似于第一个代码,但这次它工作正常,它将通过按“Ctrl+Z”退出循环

那么第一个代码的确切问题是什么?

4

1 回答 1

2

它不会退出循环,因为*word它不是空字符;word仍然指向在上一次迭代中读取的缓冲区,并且当您按 Ctrl+Z 时它会被擦除。

您应该将循环编写为:

while(cin >> word) { /* your code */ }

那么它应该在你按下 Ctrl+Z 后退出循环

此外,最好声明wordstd::string而不是char[80]

std::string word; //#include <string>

while (cin >> word)
{  
  cout << "\t\"" << word << "\"\n";
}  
于 2012-04-20T05:16:35.013 回答