0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 8
1

Обработка наборов данных системными запросами

28.05.2015, 15:05. Показов 389. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: Скопировать данные текстовые, растянув каждую строку до 64 символов пробелами. Поместить в позиции в конце строки символы: 63 - '!', 64 – ‘\n’. Считывать и записывать в файл по блокам размером 512 символов

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
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <math.h>
int main(int argc, char *dan[])
{
char input[64], output[64];
printf("Введите входной файл\n");
scanf("%s", &input);
printf("Введите выходной файл\n");
scanf("%s", &output);
 
int ti=open(input, O_RDONLY);
if(ti==-1)
{
    write(2,"Невозможно открыть файл\n",22);
    exit(2);
}
int to=open(output, O_WRONLY);
if(to==-1)
{
    write(2,"Невозможно открыть файл\n",22);
    exit(2);
}
char binput[512],boutput[512];
int i,j,kolin,indread=0,indwrite=0, flag=0;
while((kolin=read(ti,binput,512))>0)
{
    if(indread>=kolin)
    {
    write(to,boutput, kolin);
    indwrite=0;
    indread=0;
    }
    while(indread<kolin)
    {
        if(indwrite>=512)
        {
            write(to,boutput, 512);
            indwrite=0;
}
        for(j=0; j<kolin;j++)
        {
            for(i=0;i<64;i++)
            {
            if(binput[indread]=='\n')
            {
                while(i<62)
                {
                    boutput[indwrite++]=' ';
                    i++;
                }
                indread++;
                i=64;
                boutput[indwrite++]='!';
                boutput[indwrite++]='\n';
                flag=1;
            }
            else
            {
            boutput[indwrite++]=binput[indread++];
            flag=0;
}
            }
        j=j+64;
        if(flag==0)
            {
            while(binput[indread]!='\n' && indread<=kolin)
            {
            indread++;
            }
            flag=1;
            indwrite-=2;
            indread++;
            boutput[indwrite++]='!';
            boutput[indwrite++]='\n';
            j=indread;
            }
        }
    }
}
 
if(indwrite)
    write(to,boutput, indwrite);
struct stat info;
fstat(ti,&info);
printf("Размер входного файла: %d\n", info.st_size);
fstat(to,&info);
printf("Размер выходного файла: %d\n", info.st_size);
close(ti);
close(to);
return 0;
}
Проблема: Последние два блока не записывает, подскажите в чем ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2015, 15:05
Ответы с готовыми решениями:

Обработка наборов однотипных данных
помогите пожалуйста составить программу, которая переформирует заданную матрицу так, чтобы ее...

Использование уже готовых наборов в построении новых наборов
Здравствуйте. Я новичек в jquery, так что вопрос начального уровня var $table = $('table');...

Реестр наборов открытых данных
Уважаемые форумчане, прошу помочь с таким вопросом. Я далек от программирования и с помощью поиска...

Объединение наборов данных и SQL
Извиняюсь, что вопрос в этой рубрике, но отдельной рубрики по SQL на этом форуме не нашел) Для...

0
28.05.2015, 15:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2015, 15:05
Помогаю со студенческими работами здесь

Связи наборов данных в СКД
Здравствуйте! Проблема в следующем. Имеется справочник Номенклатура, у него есть табличная часть...

Сортировка различных наборов данных
ПОМОГИТЕ ПОЖАЛУЙСТА!! ОЧЕНЬ СРОЧНО!! Почему-то не работает, помогите исправить! Массив данных...

Базы данных с запросами
Помогите пожалуйста сделать. Ибо нету ни времени, ни сил, ни познаний. 2 дня назад ребёнок...

Базы данных с запросами
Здравствуйте, нужна помощь. Пропустил занятия по access, были на то серьезные причины. Надо...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru