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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2013, 20:56   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Где ошибка?

Накопились вопросы: почему происходит аварийный выход?
Как сделать так,чтобы прога распознавала именно месяц,потому что она превращает и день,и год в месяца,
Средствами текстового редактора создать текстовый файл, к каждому ряду которого записать дату в форме стринга: <День> <Месяц><Год>. В программе разработать и применить функцию,которая по заданной сокращенной дате формирует полную дату с указанием наименования месяца. Использую разработанную функцию, заменить в файле все сокращенные даты ихней полной записью.
Код:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX 100
int ReadFile(char *, char *);
void WriteFIle(char *, char *); 
int main(void)
{
    char arr[MAX];   
    
    char name1[20];//="E:\\pop.txt"; 
    char name2[]="E:\\z.txt"; 
    printf("Enter way(path) to file: \n"); 
    gets(name1);
    while(ReadFile(name1,arr)==NULL){  
        printf("Repeat:\n");          
        gets(name1);
    }
    puts(arr);
    WriteFIle(name2,arr); 
    
}
 
void WriteFIle(char *name, char *p)   
{
 
    /*int d, m, y;
    int month;
    char *mn[12] = { "jan", "feb", "march", "apr", "may",
    "leto1", "leto2", "aug", "sep", "oct", "nov", "" };
    FILE *in = fopen("pop.txt", "r");
    FILE *out = fopen("z.txt", "w");
    while (fscanf(in, "%d.%d.%d", &d, &m, &y) == 3) 
    {
    fprintf(out, "%d %s %d\n", d, mn[m - 1], y);
    }*/
    int i=3,k;
    
    do
    {
            
        if(p[i]=='1')
        {
            switch(p[i+1])
            {
                case '2': printf("December\n"); 
                    break;
                case '1': printf("November\n");
                    break;
                case '0': printf("October\n");
                    break;
            }
        }
            if (p[i]=='0')
            {
                switch(p[i+1])
                {
                case '9': printf("September\n"); 
                    break;
                case '8': printf("August\n"); 
                    break;
                case '7': printf("July\n"); 
                    break;
                case '6': printf("June\n"); 
                    break;
                case '05': printf("May\n"); 
                    break;
                case '4': printf("April\n"); 
                    break;
                case '3': printf("March\n"); 
                    break;
                case '2': printf("February\n"); 
                    break;
                case '1': printf("January\n"); 
                    break;
 
            }
                
        }
    
    p++;
   	strcpy (p, "\r\n");
 
    }
    while(*p);
    
        
    printf("Month %s\n",p[i]);  
    
    
     
}
 
 
 
int ReadFile(char *name, char *p)   
{
    FILE *f;
    char num;
 
    f=fopen(name,"rt");
    if(f==NULL)             
        return NULL;        
    while((num=getc(f))!=EOF)
    {    
        *p++=num;
        *p=0;
    }
    fclose(f);    
    return 1;    
}

Последний раз редактировалось Вероника99; 18.12.2013 в 21:26.
Вероника99 вне форума Ответить с цитированием
Старый 19.12.2013, 11:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
почему происходит аварийный выход?
Отладчиком проход делала?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2013, 11:37   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Отладчиком проход делала?
А зачем? Здесь мозгов и так хватает. Свои, зачем включать?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.12.2013, 12:37   #4
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Я уже разобралась,почему аварийный выход.
Но вот все никак не пойму,как же сделать так,чобы прога считывала именно месяц и не путала месяца с днями и годами.
Сделала так:
Код:
	p++;
	strcpy (p, "\n");
	p++;

	
	}
    while(*p!=EOF);
Но оно все равно сбивается на 4 строке

Последний раз редактировалось Вероника99; 19.12.2013 в 12:49.
Вероника99 вне форума Ответить с цитированием
Старый 19.12.2013, 13:39   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не путала месяца с днями и годами.
Разделитель строки какой? Пробел?
Тогда считывать изх файла можно так:
Код:
char s[255]={0};
fgets(f,255)
char *d=s; // День
char *m=strtok(s," ");// Месяц
char *y=strtok(s," ");// Год
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка???Турбо Паскаль Ошибка 57 PASKAL12 Помощь студентам 6 14.10.2013 22:31
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
где ошибка? Degster Паскаль, Turbo Pascal, PascalABC.NET 1 26.06.2011 11:33
написал программу, где то ошибка, не пойму где... Kelevra91 Общие вопросы C/C++ 5 17.01.2011 16:38