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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Qwer_ne_ne_ne
2 / 2 / 0
Регистрация: 06.01.2010
Сообщений: 44
#1

Функция chsize - C++

27.05.2010, 03:29. Просмотров 2100. Ответов 5
Метки нет (Все метки)

Доброе время суток.
Как можно изменить размер файла не используя функцию
C++
1
chsize(handle, seek_w);
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
// 7ps.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
#include "io.h"
#include "conio.h"
 
char read_char(FILE *fp, long seek_r);
void write_char(FILE *fp, long seek_w, char c);
 
// -----------------------------------------
int main(void)
{
     char *buff = NULL, *p, *buff1, *q;
 //  Открытие файла
 puts("enter name of file: ");
 char filename[50];
 scanf("%s", filename);
 FILE *fp;
 fp=fopen(filename, "r+t");
 if(fp==NULL)
 {
  puts("File not found");
  getch();
  return(0);
 }
 int handle=fileno(fp);
 
 //Обработка файла
 long seek_r=0, seek_w=0; // Указатели для позиций чтения и записи
 
 char c;
 int flag=1;
 while((c=read_char(fp, seek_r))!=EOF)
 {
   if(c!=' ')
   {
    // Если текущий символ не пробел просто запишем его в файл
    write_char(fp, seek_w, c);
    seek_r++; seek_w++;
    flag=1; // и установим флаг
   }
   else
   {
    // Если текущий символ пробел
    if(flag==1)
    {
     // Если флаг установлен, то запишем пробел, сбросим флаг
     write_char(fp, seek_w, c);
     seek_r++; seek_w++;
     flag=0;
    }
    else
    {
     // А если флаг сброшен, то перейдем
     // на следующую позицию чтения файла
     seek_r++;
    }
   }
 }
 
 
 // Теперь обрежем файл
 
 
 
 
 
 chsize(handle, seek_w);
 fclose(fp);
 puts("Complete!");
 getch();
 return(1);
}
 
// Чтение символа из файла с заданной позиции
char read_char(FILE* fp, long seek_r)
{
 fseek(fp, seek_r, SEEK_SET);
 return((char)fgetc(fp));
}
 
// Запись в файл в заданную позицию
void write_char(FILE* fp, long seek_w, char c)
{
 fseek(fp, seek_w, SEEK_SET);
 fputc((int)c, fp);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2010, 03:29     Функция chsize
Посмотрите здесь:

C++ функция
C++ Функция
Функция C++
Функция a,b,c C++
C++ Функция
функция C++
Функция С++ C++
Функция C=(x^a + y^(TM))/((x+y)^a) C++
Функция C++
Функция с++ C++
Функция C++
оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее вызова; 3. функ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
niXman
Эксперт C++
 Аватар для niXman
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
27.05.2010, 03:31     Функция chsize #2
открыть файл, прочитать нужное кол-во байт, записать их в другой файл, первый файл удалить, второй переименовать в первый.
Qwer_ne_ne_ne
2 / 2 / 0
Регистрация: 06.01.2010
Сообщений: 44
27.05.2010, 03:33  [ТС]     Функция chsize #3
в том то и дело что нужно работать в одном файле то есть не перезаписывать в другой.. так то да очень просто.
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.05.2010, 14:55     Функция chsize #4
Тогда никак
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
27.05.2010, 16:05     Функция chsize #5
Цитата Сообщение от Qwer_ne_ne_ne Посмотреть сообщение
в том то и дело что нужно работать в одном файле то есть не перезаписывать в другой..
Вариант "записать содержимое файла в буфер или стандартный контейнер, закрыть файл, открыть его же для записи и записать в него из буфера/контейнера только то, что нужно" не рассматривается?
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
28.05.2010, 07:32     Функция chsize #6
открыть его же для записи и записать в него
Нужно не просто открыть - а обрезать файл до 0-ой длины !
Yandex
Объявления
28.05.2010, 07:32     Функция chsize
Ответ Создать тему
Опции темы

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