Форум: Форум C++Разное
Новые темы: 00
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Файловый ввод-вывод
 
 автор: WarStalkeR   (24.09.2007 в 10:36)   письмо автору
 
 

Здравствуйте, уважаемые! Я в С++ новичек и опыта у меня никакого, точнее весь мой опыт - школьный курс, вот просто недавно наткнулся на ту часть в С++ где, мне нужно вводить в файл (например: text.txt) и читать из него, к сожалению я в этом разделе ничего незнаю. Если что, извените меня если я задаю сильно глупые вопросы...

Мне нужно написать фрагмент программы:
Ввести (записать) в файл (например: text.txt) текстовые значения, т.е. я ввожу два слова, это первая строка в файле, вторая строка - это вторые два слова и т.д.
Связаное с выводом (чтением) из файла:
Потом мне нужно подсчитать кол-во строк с парами, потом каждое слово записаное в файле мне нужно прочесть как отдельную переменную.

Заранее большое спасибо за любую помощь!

  Ответить  
 
 автор: cheops   (24.09.2007 в 14:26)   письмо автору
 
   для: WarStalkeR   (24.09.2007 в 10:36)
 

Заполнить файл можно примерно следующим образом
#include <stdio.h>
#include <iostream.h>
using namespace std;

int main()
{
  char input[80];
  FILE *fp;

  // Открываем файл
  fp = fopen("filename.txt""w");
  if(fp == NULL)
  {
    cout << "Невозможно открыть файл: " << ferror(fp) <<  "\n";
    return 1;
  }

  // Читаем строки, пока не будет введена 
  // пустая строка
  while(1)
  {
    cout << "Введите строку ";
    fgets(input, 80, stdin);
    // Если первый символ или второй
    // равны переводу строки - выходим
    // из цикла (в UNIX перевод строки \n,
    // в Windows - \r\n)
    if(input[0] == '\n' || input[1] == '\n'break;
    // Записываем полученную строку
    // в файл
    fprintf(fp ,"%s", input);
  }

  // Закрываем файл
  fclose(fp);

  return 0;
}

  Ответить  
 
 автор: cheops   (24.09.2007 в 14:27)   письмо автору
 
   для: WarStalkeR   (24.09.2007 в 10:36)
 

Количество строк в файле можно подсчитать следующим образом
#include <iostream>
#include <stdio>
using namespace std;

int main()
{
  FILE *fp;
  // Открываем файл
  fp = fopen("filename.txt""r");
  if(fp == NULL)
  {
    cout << "Невозможно открыть файл: " << ferror(fp) <<  "\n";
    return 1;
  }

  const int LENGTH = 10000;
  int count = 0;
  char str[LENGTH];
  // Подсчитываем количество строк в файле
  while(!feof(fp))
  {
    fgets(str, LENGTH, fp);
    count++;
  }
  cout << count << "\n";

  // Закрываем файл
  fclose(fp);

  return 0;
}

  Ответить  
 
 автор: cheops   (24.09.2007 в 14:29)   письмо автору
 
   для: WarStalkeR   (24.09.2007 в 10:36)
 

>потом каждое слово записаное в файле мне нужно прочесть как отдельную переменную.
Вот это не очень понятно... обычно в массив помещают строки, чтобы потом было удобнее работать - вы что потом будете делать с полученными переменными?

  Ответить  
 
 автор: WarStalkeR   (25.09.2007 в 10:26)   письмо автору
 
   для: cheops   (24.09.2007 в 14:29)
 

Вот допустим я ввел два слова: "alpha beta", именно так через пробел второе слово после первого. alpha - первая переменная, beta - вторая переменная, должен будет стоять некий флаг говорящий что alpha = beta, и при этом что бы они обе не изменялись, т.е. alpha оставалась alpha, а beta оставалась beta и при этом были равны друг другу.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования