Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2010, 10:21   #1
Remedy
 
Регистрация: 21.11.2010
Сообщений: 5
По умолчанию Чтение заданного кол-ва строк из файла, С++

Здравствуйте. Цель такова: Надо прочитать определенное кол-во строк из файла, записать в массив(?) и вывести на экран (именно построчно, так, как в файле). Число строк заранее хранится в переменной типа инт. Читать из файла строчку умею только так (да, мне стыдно) )
Код:
FILE *fp;
if ((fp = fopen("MYFILE", "r")) == NULL)
	{
	puts("Невозможно открыть файл");
	return 0;
	}
while (fscanf(fp, "%s",word_two) != EOF)
fclose(fp);

Пример текстового файла:

Цитата:
COM+[11:43:36]: INF VERSION (com) = 2001,12,4414,42
COM+[11:43:36]: Instantiating CMasterNT5Wks
COM+[11:43:36]: Memory usage for setup process...
COM+[11:43:36]: PeakWorkingSetSize: 55516 Kb, WorkingSetSize: 25676 Kb
COM+[11:43:36]: QuotaPeakPagedPoolUsage: 99 Kb, QuotaPagedPoolUsage: 96 Kb
COM+[11:43:36]: PeakPagefileUsage: 44812 Kb, PagefileUsage: 16544 Kb
COM+[11:43:36]: MTSS: Answer File = C:\WINDOWS\system32\$winnt$.inf
COM+[11:43:36]: Answer File Handle is valid!
Юзала поиск, то, что нужно не нашла. Буду благодарна за любую помощь

Последний раз редактировалось Stilet; 22.11.2010 в 09:58.
Remedy вне форума Ответить с цитированием
Старый 21.11.2010, 16:00   #2
Remedy
 
Регистрация: 21.11.2010
Сообщений: 5
По умолчанию

Извините, что навязываюсь. Никто не знает?
Remedy вне форума Ответить с цитированием
Старый 21.11.2010, 16:15   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Код:
int ReadFile(char *path, int N, char **mass) {
  FILE *f = NULL;
  int i;
  if ((f = fopen(path, "r")) != NULL) {
    for (i = 0; i < _N; i++) {
      fgets(mass[i], 50, f);
    }
    fclose(f);
  }
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 21.11.2010, 16:39   #4
Remedy
 
Регистрация: 21.11.2010
Сообщений: 5
По умолчанию

Большое спасибо, что откликнулись, VS 2008 пишет ошибку: error C4716: 'ReadFile' : must return a value Что я не так делаю. UPD: если меняю int ReadFile на void main, то программа запускается, но ничего не происходит (путь указан, у есть N значение)

Последний раз редактировалось Remedy; 21.11.2010 в 17:46.
Remedy вне форума Ответить с цитированием
Старый 21.11.2010, 17:44   #5
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
int ReadFile(char *path, int N, char **mass) {
исправьте на
Код:
void ReadFile(char *path, int N, char **mass) {
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 21.11.2010, 17:55   #6
Remedy
 
Регистрация: 21.11.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
исправьте на
Код:
void ReadFile(char *path, int N, char **mass) {
Так
Код:
void main()
{
void ReadFile(char *path, int N, char **mass); 
getch();
}
void ReadFile(char *path, int N, char **mass) 
{
  FILE *f = NULL;
  int i;
  N=2;
  if ((f = fopen("c:\\1.txt", "r")) != NULL)
  {
    for (i = 0; i < N; i++) 
	{

      fgets(mass[i], 50, f);
    }
    fclose(f);
  }
}
Или так
Код:
void main(char *path, int N, char **mass)
{
FILE *f = NULL;
  int i;
  //path="c:\\1.txt";
  N=2;
  
  if ((f = fopen("c:\\1.txt", "r")) != NULL)
  {
    for (i = 0; i < N; i++) 
	{

      fgets(mass[i], 50, f);
    }
    fclose(f);
  }
getch();
}
Запускается, но окошко пустое
Remedy вне форума Ответить с цитированием
Старый 21.11.2010, 21:01   #7
Remedy
 
Регистрация: 21.11.2010
Сообщений: 5
По умолчанию

Всё, разобралась (туплю), вот так работает (кому понадобиться может))

Код:
void main()
{
int N;
char mass[25][25];
FILE *f = NULL;
int i;
N=2;
if ((f = fopen("c:\\1.txt", "r")) != NULL)
  {
    for (i = 0; i < N; i++) 
	{

      fgets(mass[i], 50, f);
	  printf("%s",mass[i]);
	  
    }
    fclose(f);
  }

getch();
}
Код:
void main(char *path, int N, char **mass)
- ну и так тоже можно)

Последний раз редактировалось Remedy; 21.11.2010 в 21:07. Причина: upd
Remedy вне форума Ответить с цитированием
Старый 21.11.2010, 22:44   #8
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
void main(char *path, int N, char **mass)
так не нужно делать
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение файла в массив строк java (Перенесено из Java SE) Sasha9132 Помощь студентам 0 18.11.2010 22:57
Чтение и удаление строк из текствого файла Blourid Общие вопросы .NET 8 11.10.2010 22:01
Чтение опеределенных строк из файла Dennis777 Помощь студентам 6 14.11.2009 21:59
Чтение ASCII строк из PE файла Flippp Общие вопросы C/C++ 3 19.08.2009 12:30
Чтение строк из файла (С++) counter Помощь студентам 2 05.11.2008 02:02