2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 работа с файлами и структурами С++
Сообщение22.05.2012, 01:28 


12/05/12
19
Доброго времени суток. Написала программу,она работает,все замечательно,но в выходном файле( да и в исходном) создается строка со смайликами и ненужными символами. Преподаватель сказала,что возможно в файлах есть пустая строка,которая забивается ненужностями. Необходимо избавиться от этой строки,т.к. портит вид,да и преподаватель не хочет принимать такую программку :( пожалуйста,подскажите,если сталкивались с такой проблемой,что делать?
Вот код программы:

код: [ скачать ] [ спрятать ]
Используется синтаксис C++
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstring>
  4. #include <iomanip>
  5. using namespace std;
  6. ifstream in("input.txt");
  7. ofstream out("output.txt");
  8.  
  9. struct vkladchik                                            //структура из вкладчиков в банке
  10. {char familiya[30], imya[30],otchestvo[30];
  11. int nomer,summa,god;
  12. void schow();                                 //функция для вывода информации на экран
  13. void print();                                  //функция для вывода информации в выходной файл
  14. };
  15. void vkladchik::schow()
  16. {cout<<setw(10)<<familiya<<setw(10)<<imya<<setw(10)
  17. <<otchestvo<<setw(10)<<nomer<<setw(10)<<summa<<setw(10)<<god<<endl;}
  18. void vkladchik::print()
  19. {out<<setw(10)<<familiya<<setw(10)<<imya<<setw(10)<<otchestvo<<setw(10)<<nomer<<
  20. setw(10)<<summa<<setw(10)<<god<<endl;}
  21.  
  22. int main()
  23.   {vkladchik man[30];
  24.         int k,n=0;
  25.         if (!in) cout<<"oshibka pri otkritii input.txt"<<endl;
  26.         else
  27.              while (in.peek()!=EOF)
  28.              { in>>man[n].familiya;
  29.              in>>man[n].imya;
  30.              in>>man[n].otchestvo;
  31.              in>>man[n].nomer;
  32.              in>>man[n].summa;
  33.              in>>man[n].god;
  34.              man[n].schow();
  35.              n++;}
  36.   cout<<"Kakoi seychas god?";                                       cin>>k;                                                                         // программа выводит все правильно,вот только
  37.                                                                                          //строка с непонятными символами появляется
  38.                                                                                           //  в       конце
  39.   if (!out) cout<<"oshibka pri otkritii outnput.txt"<<endl;
  40.   else {
  41.         for (int i=0;i<n;i++)
  42.        if (man[i].god==k)
  43.        {man[i].schow();
  44.       man[i].print();
  45.    } }
  46.        in.close();
  47.        out.close();
  48.   return 0;}
  49.  


-- 22.05.2012, 01:32 --

Само задание : На основе данных входного файла составить список вкладчиков банка,включив следующие данные : ФИО,№ счета,сумма,год открытия счета. Вывести в новый файл информацию о тех вкладчиках,которые открыли вклад в текущем году.

 Профиль  
                  
 
 Re: работа с файлами и структурами С++
Сообщение22.05.2012, 12:14 


16/06/10
199
Проблема в 27-й строке программы. Ваш исходный файл (input.txt) выглядит скорее всего так:
Код:
"Иванов Иван Иванович 1 100 2012\nПетров Пётр Петрович 2 200 2012\n\n\n\n\n"
Поэтому, после чтения последней строки данных, очередной вызов метода peek() вернёт '\n', что не равно EOF, как хотелось бы. В результате имеем "лишний" элемент массива структур с неинициализированными членами.
Что делать? Проще всего — отредактировать исходный файл, удалив в конце все символы '\n'(новая строка), но лучше изменить условие цикла (27 строка) на while (in>>man[n].familiya).

 Профиль  
                  
 
 Re: работа с файлами и структурами С++
Сообщение22.05.2012, 13:27 


12/05/12
19
Спасибо большое,Вы очень помогли))))

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group