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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2011, 21:47   #1
sandak
Пользователь
 
Регистрация: 11.12.2011
Сообщений: 11
По умолчанию Работа с файлами (С)

Понимаю, задание простенькое, но не могу разобратся.

Задание таковое : есть 2 файла. В одном года рождения, в другом фамилии. Нужно составить один файл, в котором будет фамилия и год рождения.

Код:
#include <stdio.h>
#include <string.h>

main ()
{
    char fio_ch[15];
    int bd[20];
    int swin1, swin2, swin3;       
    FILE *fio, *b_d, *out;  
    fio = fopen ("fio.txt", "r"); 
    b_d = fopen ("b_d.txt", "r");
    out = fopen ("out.txt", "w");
    
    while (swin1!=EOF || swin2!=EOF)       
    {
        swin1 = fscanf (fio, "%s", fio_ch);
        swin2 = fscanf (b_d, "%d", &bd);
        fprintf(out, "%s  %d\n", fio_ch, bd);
    }
       
     
    printf ("\n-------------------------------------");
    
    while (swin3!=EOF) 
    {
        swin3 = fscanf (out, "%s %d", fio_ch, &bd);
        if (swin3 == EOF)   
        break;        
        printf("\n%s %d", fio_ch, bd);
    }
    
    
    fclose (fio); 
    fclose (b_d);
    fclose (out);
    
    getchar();       
}
Проблема в том, что программа зависает. Компилятор ошибок не выдает.
sandak вне форума Ответить с цитированием
Старый 23.12.2011, 21:59   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Условия циклов кривые!
смотрим
1) while (swin1!=EOF || swin2!=EOF)
здесь выход из цикла возможен ток когда оба файла кончятся!
Представляем ситуацию когда один файл короче другого!
Читаем первый до конца, но второй не файл не кончился поэтому читаем дальше и выходим за границы и короч в бесконечность!
Дальше
2) fprintf(out, "%s %d\n", fio_ch, bd); ок пишем в файл ! но
тут же ниже
while (swin3!=EOF)
{
swin3 = fscanf (out, "%s %d", fio_ch, &bd);
if (swin3 == EOF)
break;
printf("\n%s %d", fio_ch, bd);
}

втф? вы хоть позицию курсора то меняли?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами. VintProg Общие вопросы C/C++ 14 04.07.2011 17:44
работа с файлами гаиндин Помощь студентам 1 17.06.2011 14:05
Работа с файлами Александр16 Паскаль, Turbo Pascal, PascalABC.NET 0 05.06.2011 15:17
Работа с файлами в С Tasha_no Помощь студентам 0 26.12.2010 17:08
Работа с файлами в C++ Vigoss Помощь студентам 1 23.12.2010 13:20