Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Вероника99
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
1

Где ошибка?

18.12.2013, 20:51. Просмотров 322. Ответов 2
Метки нет (Все метки)

Накопились вопросы: почему происходит аварийный выход?
Как сделать так,чтобы прога распознавала именно месяц,потому что она превращает и день,и год в месяца,
Средствами текстового редактора создать текстовый файл, к каждому ряду которого записать дату в форме стринга: <День> <Месяц><Год>. В программе разработать и применить функцию,которая по заданной сокращенной дате формирует полную дату с указанием наименования месяца. Использую разработанную функцию, заменить в файле все сокращенные даты ихней полной записью.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#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)   
{
    FILE *f;
    /*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++;
    *p=='\r\n';
 
    }
    while(*p);
    
        
    printf("Month %s\n",p[i]);  
    
    
        
 
    fclose(f); 
}
 
 
 
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;    
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2013, 20:51
Ответы с готовыми решениями:

Где ошибка
Помогите. Не знаю где ошибка(ошибки) в коде.#include &lt;stdio.h&gt; #include &lt;time.h&gt; #include...

Где ошибка?
После запуска выдаёт только &quot;Для продолжения...&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt;...

где ошибка?
Найти среднее арифметическое и вместо максимального и минимального ср. арифметическое #include...

Где ошибка?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main() { int M, A, ch = 1, zn =...

где ошибка!
где ошибка! #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;alloc.h&gt; typedef struct EList{ ...

2
Dizark
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 71
18.12.2013, 21:07 2
В приведенном коде в функции WriteFile, в конце вы закрываете дескриптор f, который в этой функции не был открыт. Собственно вот вам и аварийный выход.

Потом, в этойже функции, есть строчка вида:
C
1
*p=='\r\n'
Которая во первых не имеет смысла, т.к. вместо оператора присваивания используется проверка на равенство и компилятор это просто игнорирует.
Во вторых так присвоить это значение указателю нельзя. Т.к. \r\n - это два символа.
Чтобы это сделать вам надо использовать что-нибудь вида
C
1
strcpy (p, "\r\n")
0
Вероника99
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
18.12.2013, 21:14  [ТС] 3
Dizark, а как можно сделать так,чтобы распознавался именно месяц? У меня в файле данные записаны в таком виде:
11 12 2022
14 02 2003
Как сделать,чтобы наименования получали только 12 и 02, а не все числа?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 21:14

Где ошибка?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;ctype.h&gt; int main() {...

где ошибка?
максимальные размеры массива - статические константы; • реальные размеры массива n i m (n &lt;N, m...

Где ошибка? подскажите
В С Удалить цифры 0, 3, 6, 9 из элементов массива. #include &lt;stdio.h&gt; int main() { int a,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru