Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по текстовым файлам  (Прочитано 3558 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PPPoE
Гость
« : 18-09-2010 07:53 » 

Есть 3 текстовых файла:
1 - хранится информация
2 - хранится имя первого файла - dir1
3 - куда нужно скопировать информацию из первого файла - dictionary

Пробовала разными способами считать имя файла и передать его в параметр функции fopen, но не работает

Не работает этот блок:

                if((file = fopen(fgets(buf, 20, dir1),"rt")) == NULL){
                        fprintf(stderr, "Cannot open input file.\n");
                        return 1;
                }
                while(!feof(file)){
                        fputc(fgetc(file),dictionary);
                }               

Если напрямую прописать имя первого файла, то работает. Пробовала также массив char, куда считывала имя функции и использовала как параметр - имя файла - в fopen, тоже не получается.

Что делаю неправильно?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 18-09-2010 11:45 » 

У тебя скорее всего после чтения из файла названия следуюшего файла в конце затесались символы перевода строки. Их нужно очистить. Вот так у меня работает:
Код:
#include <stdio.h>
#define PATHLEN 255
int main() {
  FILE * dir2File;
  FILE * dir1File;
  dir2File = fopen ("dir2.txt","r");
  if (dir2File!=NULL)  {
    char namebuf[PATHLEN];
    fgets(namebuf, PATHLEN, dir2File);
    int beg=0;
    while(namebuf[beg] != '\n' && namebuf[beg] != 0 && namebuf[beg] != '\r') beg++;
    namebuf[beg]=0;
    dir1File = fopen (namebuf,"r");
    if (dir1File!=NULL) {
fgets(namebuf, PATHLEN, dir1File);
printf("%s\n", namebuf);
fclose(dir1File);
    }
     
    fclose (dir2File);
  }
  return 0;
}
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
PPPoE
Гость
« Ответ #2 : 18-09-2010 12:07 » 

Спасибо огромное, заработало! Тоже думала, что из-за символа конца строки, пыталась без него, но никак не получалось.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines