Цикл не работает в C ++ - PullRequest
2 голосов
/ 25 марта 2011

Я создал программу, которая создает файл с именем пользователя, а затем позволяет им вставлять строки. Я хочу сделать так, чтобы, если они ничего не вводят (просто нажимая ввод), он выходит, но у меня возникают проблемы с выяснением, что я делаю неправильно. Вот мой код:

#include <iostream>
#include <fstream>

using namespace std;

int main(){
 char filename[20];
 char line[81];
 int X;
 cout<<"Welcome to a very primative word precessor"<<endl;
 cout<<"please enter a filename"<<endl;
 cin.getline(filename, 19);
 ofstream file_out(filename, ios::app);
 if (! file_out){
    cout<<"Cannot open "<<filename;
    cout<<"!!!"<<endl;
    return -1;
 }
 cout<<"File "<<filename;
 cout<<" was opened."<<endl;
     do {
  cout<<"Enter your notes here"<<endl;
  cin.getline(line, 80);
  file_out<<line<<endl;
  cout<<line<<endl;
 }
 while (! line);
 cout<<"last line"<<endl;
 file_out.close();
 return 0;
}

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Требуется изменить только ваше время:

while (strlen (line)! = 0);

2 голосов
/ 25 марта 2011

Проблема в том, как вы сравниваете line:

do {
    cout<<"Enter your notes here"<<endl;
    cin.getline(line, 80);
    ...
}
while (! line);
      ^^^^^^^

! line совпадает с line == 0.Теперь line является адресом массива char:

char line[81];

Так что сравнение всегда ложно, поскольку line всегда будет иметь значение true.

Вам необходимо изменить его на:

while (! strcmp(line,""));

и добавьте

#include <cstring> 

в начале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...