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

Возможно ли записать в последний символ EOF? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Открытка http://www.cyberforum.ru/cpp-beginners/thread134623.html
Всем привет, прошу помочь с написание открытки на новый год, если можно с анимацией, заранее премного благодарен! Добавлено через 3 часа 18 минут Плиззз помогите
C++ Классы и компоненты Для класса class String { char* Buff; unsigned Size; ... } написать конструктор http://www.cyberforum.ru/cpp-beginners/thread134622.html
C++ функции для шифрации и дешифрации некоторого текста
добрый вечер.... нужна помощь....срочно:( Фраза шифруется следующим образом: посе первых двух символов вставляется слог БУ,после следующих двух вставляется КА, это повторяется до тех пор, пока в фразе есть хотя бы две буквы. Например, фраза Я ОТ БАБУШКИ УШЕЛ Шифруется так: Я БУОТКА ББУАБКАУШБУКИКА УБУШЕКАЛ Напишите функции для шифрации и дешифрации некоторого текста. Функции main в...
Написать и протестировать функцию STR_CMP(str1,str2) C++
добрый день... очень нужна помощь... Написать и протестировать функцию STR_CMP(str1,str2), которая сравнивает строки str1 и str2. Функция должна работать для русских букв, возвращать 1, если строки равны и 0 в противном случае.
C++ Отсортировать элементы каждой строки квадратной матрицы размерностью N по убыванию. http://www.cyberforum.ru/cpp-beginners/thread134616.html
добрый день.... нужна ваша помощь.... Отсортировать элементы каждой строки квадратной матрицы размерностью N по убыванию. Значение N программа должна запрашивать в диалоговом режиме, память под матрицу следует распределять динамически. Напищите функции: -заполнения двумерного массива случайными числами из диапазна –200, +200; -вывода двумерного массива; -сортировки строки матрицы по...
C++ Непонятка с функцией(ошибка в коде) Необходимо вычислить значения нескольких сумм с помощью функций в следующей функции: y=a+4*sum J=2, N+1(3*J^2+J+2)/4+3*sum J=1,N(2*J+3);J - начальное значение суммы, следовательно N - конечное. Помогите найти ошибку в коде при А=6, и N=8. Ответ: 8.464864864864865 #include <stdio.h> #include <math.h> float func (int, int, int, int, int); int main () { float s1, s2, y; int N; подробнее

Показать сообщение отдельно
Qwer_ne_ne_ne
2 / 2 / 0
Регистрация: 06.01.2010
Сообщений: 44

Возможно ли записать в последний символ EOF? - C++

24.05.2010, 11:11. Просмотров 1643. Ответов 4
Метки (Все метки)

Доброе время суток.
В текстовом файле заменить все последовательности идущих подряд пробелов одним пробелом.

Можно ли записать в последний символ EOF . То есть я не знаю как это сделать.


Структура типа FILE создается при открытии файла и в одном из ее элементов прописывается
длина файла. и я думаю что никакой EOF туда записать нельзя мол как то так :
C++
1
write_char(fp, seek_w, EOF);
Но так ни чего не работает.Препод пожимает пличами и говорил мол запиши туда его ... может я чего не знаю подскажите ?!
хотя я использую функцию которая обрезает фаил :
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
#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)
{
 //  Открытие файла
 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++;
    }
   }
 } // while
 
 // Теперь обрежем файл
 
 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);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru