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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2013, 16:52   #1
3Doleg
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 67
По умолчанию неправильная работа програмы

Всем привет, есть вопрос:
Что не так в коде, при нажатии цифры должно выполняться действие, указанное в операторе switch(), но почему-то программа неправильно работает, просто зависает и все(при следующим нажатии, не при первом). И еще, правильная ли функция добавления данных в конец файла?

Вот код главной програмы

Код:
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
 
#define _countEntrans 2
#define inputFile "in.txt"
 
struct Entrans
{
    char surName[25 + 1];   
    char name[25 + 1];
    int dateBirth;
    char zodiacSign[9 + 1];
    char sex[8 + 1];
    char mail[50 + 1];  
}   part[_countEntrans];
 
struct birthDate
{
    struct Entrans day;
    struct Entrans month;
    struct Entrans year;
}   part2[_countEntrans];
 
void clean();
 
void inputInFile();
 
void display();
 
void addToEnd();
 
main()
{
    FILE *_fIn;
 
    unsigned int mItem = 0;
    int i = 1, n;   
 
    system("cls");
 
    /*[menu]*/
 
        while(1)
        {
            fflush(stdin);
            printf("1. Vvid danuh.\n");
            printf("2. Vyvid danuh z faily.\n");
            printf("3. Dodatu n zapusiv v kinec faily.\n");
            /*printf("4. Dodatu n zapusiv v pochatok faily.\n");*/
            printf("4. Vuxid z programu.\n");
            printf("> ");
            scanf("%u", &mItem);
 
            if(mItem && mItem < 5)
            {
                
                if(mItem == 4)
                    break;
                switch(mItem)
                {
                    case 1: clean(); inputInFile(); break;
                    case 2: clean(); display(); break;
                    case 3: clean(); addToEnd(); break;
                }
            }
            printf("\n-------------------------------------\n");
            mItem = 0;
        }
 
    /*[/menu]*/
 
getch();
return(0);
}
3Doleg вне форума Ответить с цитированием
Старый 23.09.2013, 16:52   #2
3Doleg
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 67
По умолчанию

А вот код функций:

Код:
void clean()    
{
    system("cls");
}
 
void inputInFile()  //zapus v fail
{
    int i;
 
    FILE *_fIn;
 
    if((_fIn = fopen(inputFile, "wt")) == NULL)
    {
        printf("error, can't open %s file\n", inputFile);
        exit(0);
    }
 
    for(i = 1; i <= _countEntrans; i++)
    {
        printf("Zapus #%d\n", i);
        printf("----------------------------------------\n");
        printf("Vvedit prizvuwe %d ljudyny: ", i);
        scanf("%s", &part[i].surName);
 
        printf("Vvedit im'ya %d ljudyny: ", i);
        scanf("%s", &part[i].name);
 
        printf("Vvedit daty narodjenny %d ljudyny: \n", i);
        printf(" Vvedit den narodjennja:");
        scanf("%d", &part2[i].day.dateBirth);
        printf("  Vvedit misjac narodjennja:");
        scanf("%d", &part2[i].month.dateBirth);
        printf("   Vvedit rik narodjennja:");
        scanf("%d", &part2[i].year.dateBirth);
 
        printf("Vvedit znac zodiaky %d ljudyny: ", i);
        scanf("%s", &part[i].zodiacSign);
 
        printf("Vvedit stat %d ljudyny: ", i);
        scanf("%s", &part[i].sex);
 
        printf("Vvedit adresy %d ljudyny: ", i);
        scanf("%s", &part[i].mail);
 
    }
        
    printf("Dani u faili!\n");
    printf("--------------------------------------------\n");
    for(i = 1; i <= _countEntrans; i++)
    {
        fprintf(_fIn, "%s\n", part[i].surName);
        fprintf(_fIn, "%s\n", part[i].name);
        fprintf(_fIn, "%d.", part2[i].day.dateBirth);
        fprintf(_fIn, "%d.", part2[i].month.dateBirth);
        fprintf(_fIn, "%d\n", part2[i].year.dateBirth);
        fprintf(_fIn, "%s\n", part[i].zodiacSign);
        fprintf(_fIn, "%s\n", part[i].sex);
        fprintf(_fIn, "%s\n\n", part[i].mail);
    }
    fclose(_fIn);
}
 
void display()  
{
    int i = 1;
 
    FILE *_fIn;
 
    if ((_fIn = fopen(inputFile, "rt+")) == NULL)
    {
        printf("Error, can't open file %s", inputFile);
        exit(0);
    }   
 
    printf("Vvedeni dani:\n");
    while (!feof(_fIn))
    {
        printf("\n-----------------------------------------------");
        printf("\nPrizvuwe: ");
        fscanf(_fIn, "%s", part[i].surName);
        printf("%s", part[i].surName);
 
        printf("\nIm'ya: ");
        fscanf(_fIn, "%s", part[i].name);
        printf("%s", part[i].name);
    
        printf("\nData narodjennya(dd.mm.yyyy): ");
        fscanf(_fIn, "%d.%d.%d", &part2[i].day.dateBirth, &part2[i].month.dateBirth, &part2[i].year.dateBirth);
        printf("%d.%d.%d", part2[i].day.dateBirth, part2[i].month.dateBirth, part2[i].year.dateBirth);
 
        printf("\nZnac zodiacu: ");
        fscanf(_fIn, "%s", part[i].zodiacSign);
        printf("%s", part[i].zodiacSign);
 
        printf("\nStat: ");
        fscanf(_fIn, "%s", part[i].sex);
        printf("%s", part[i].sex);
 
        printf("\nAdresa: ");
        fscanf(_fIn, "%s", part[i].mail);
        printf("%s", part[i].mail);
 
        i++;
        if(i == (_countEntrans + 1))
            break;
    }
    fclose(_fIn);
}
 
void addToEnd() 
{
    int i, n;
    
    FILE *_fIn;
 
    system("cls");
    
    printf("Skilku potribno dodatu zapusiv?:\n");
    scanf("%d", &n);
 
    if( (_fIn = fopen(inputFile, "at+")) == NULL )
    {
        printf("error, can't open %s file\n", inputFile);
        exit(0);
    }   
 
    for(i = (_countEntrans + 1); i <= (_countEntrans + n); i++)
    {
        printf("Zapus #%d\n", i);
        printf("----------------------------------------\n");
        printf("Vvedit prizvuwe %d ljudyny: ", i);
        scanf("%s", &part[i].surName);
 
        printf("Vvedit im'ya %d ljudyny: ", i);
        scanf("%s", &part[i].name);
 
        printf("Vvedit daty narodjenny %d ljudyny: \n", i);
        printf(" Vvedit den narodjennja:");
        scanf("%d", &part2[i].day.dateBirth);
        printf("  Vvedit misjac narodjennja:");
        scanf("%d", &part2[i].month.dateBirth);
        printf("   Vvedit rik narodjennja:");
        scanf("%d", &part2[i].year.dateBirth);
 
        printf("Vvedit znac zodiaky %d ljudyny: ", i);
        scanf("%s", &part[i].zodiacSign);
 
        printf("Vvedit stat %d ljudyny: ", i);
        scanf("%s", &part[i].sex);
 
        printf("Vvedit adresy %d ljudyny: ", i);
        scanf("%s", &part[i].mail);
    }
 
    i = 0;
 
    for(i = (_countEntrans + 1); i <= (_countEntrans + n); i++)
    {
        fprintf(_fIn, "%s\n", part[i].surName);
        fprintf(_fIn, "%s\n", part[i].name);
        fprintf(_fIn, "%d.", part2[i].day.dateBirth);
        fprintf(_fIn, "%d.", part2[i].month.dateBirth);
        fprintf(_fIn, "%d\n", part2[i].year.dateBirth);
        fprintf(_fIn, "%s\n", part[i].zodiacSign);
        fprintf(_fIn, "%s\n", part[i].sex);
        fprintf(_fIn, "%s\n\n", part[i].mail);
    }
    fclose(_fIn);
}
3Doleg вне форума Ответить с цитированием
Старый 23.09.2013, 18:01   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Отладчиком пошаговку конечно же не делал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2013, 20:10   #4
3Doleg
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 67
По умолчанию

только что сделал пошагово, непонимаю в чем дело, все то же ...
3Doleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильная работа процессора Дмитрий 1993 Компьютерное железо 6 09.08.2013 19:31
неправильная работа программы... fkty Помощь студентам 4 05.06.2013 16:20
неправильная работа keybd_event chertovich Win Api 3 07.01.2012 14:52
ADOTable неправильная работа. Spaun Помощь студентам 1 23.06.2010 10:12
неправильная работа программки. Rafff Общие вопросы C/C++ 6 05.04.2010 15:16