Форум программистов, компьютерный форум CyberForum.ru

Работа с файлами и строками - C++

Восстановить пароль Регистрация
 
Medved_sendi
Сообщений: n/a
02.12.2012, 12:51     Работа с файлами и строками #1
Доброе время суток дорогие пользователи форума.
в общем нужна Ваша помощь в написание лабы по C++
задание "Дан файл с числами фразами да и полностью любыми символам, пользователь вводит число допустим N, если число N больше числа из первого файла, то записывается во второй файл записывается N если меньше то число из первого файла, естественно остальной мусор тоже.Форматирование сохраняется.
Пример:
число N=50.
Входной файл:
asd@#asd1222adfghj23
sdfsdf123123g22g1231f
Выходной файл:
asd@#asd50adfghj23
sdfsdf50g22g50f
кое что написал, даже компилируется) но после выдает ошибку
"Необработанное исключение в "0x7c91ac4a" в "lab2_10.exe": 0xC0000005: Нарушение прав доступа при записи "0x00000728"." и кнопки прервать, продолжить.
не могли бы помочь?
выкладываю свой исходник

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
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    FILE *fo,*fo2 ; 
    if( (fo=fopen("test.txt","r")) == NULL ) 
     {  
       
      printf  (" \n Исходный файл не найден \n");
           return 2 ;
     } 
    if( (fo2=fopen("result.txt","w")) == NULL ) 
     {  
       
     printf  (" \n не создал файл \n");
           return 3 ;
     } 
 
 
    char chislo_str[100];
    char n;
    int chislo_input=20;
    int  nod=0,x=1;
 
    while (!feof(fo))
    {
 
        n=getc(fo);
       int acsii = static_cast<int>(n);
       if (acsii<=48 && acsii>=57)
       {
          if (nod=1) 
               {
                   if (chislo_input>atoi(chislo_str))
                         fprintf(fo2,"%s",chislo_input);
                     else
                         fprintf(fo2,"%s",chislo_str);
         
                  nod=0;
                 for (n=strlen(chislo_str);n>0;n--) 
                   chislo_str[n]='\0';
            
                  x=0;    
               }         
               else 
               fprintf(fo2,"%s",n);
       }
 
       nod = 1;
       chislo_str[x]=n;
       x++;
    }
    fclose(fo);
    fclose(fo2);
    
    return 0;
}
среда разработки MS Visual C++ 2010
так же приму другие варианты реализации данной программы, если можно то с комментариями
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 12:51     Работа с файлами и строками
Посмотрите здесь:

C++ Работа с файлами и строками
Работа с файлами и строками. C++
C++ Работа с файлами и строками
C++ работа с файлами и строками
C++ Работа со строками и файлами
C++ Работа с файлами и строками
Работа со строками и файлами C++
Работа с файлами, со строками C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Medved_sendi
Сообщений: n/a
16.12.2012, 10:17     Работа с файлами и строками #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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int file()
{
FILE *fo,*fo2 ; 
if( (fo=fopen("test.txt","r")) == NULL ) 
{ 
    printf (" \n Исходный файл не найден \n");
    return 1 ;
} 
if( (fo2=fopen("result.txt","w")) == NULL ) 
{
    printf (" \n не создал файл \n");
    return 2 ;
} 
fclose(fo);
fclose(fo2);
};
 
int glav()
{
FILE *fo,*fo2;
char chislo_str[100]=" ";
char n;
int chislo_input,nod=0,x=0;//счёт в массивах ведется от нуля
fo=fopen("test.txt","r");
fo2=fopen("result.txt","w");
printf (" \n Введите любимое число:");
scanf("%d",&chislo_input);
while (!feof(fo))
{
    n=getc(fo);
    if (n>='0' && n<=57)//если не цифра
    {  
        chislo_str[x]=n;
        x++;
        nod=1;
    }
    else 
    {
        if (nod==1)//если до этого была цифра 
        {
     if (chislo_input<(atoi(chislo_str)))
     {
         fprintf(fo2,"%d",chislo_input);
     }
     else
     {
         fprintf(fo2,"%s",chislo_str);
     }
 
     nod=0;
         chislo_str[0]='\0';
     x=0; 
        }
        fprintf(fo2,"%c",n);
    }
}
fclose(fo);
fclose(fo2);
}
 
int main()
{
    file(); 
    glav();
    return 0;
}
Среда разработки wxDev-C++
Yandex
Объявления
16.12.2012, 10:17     Работа с файлами и строками
Ответ Создать тему
Опции темы

Текущее время: 17:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru