Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Не работает FSEEK


Автор: mr.Anderson 20.5.2006, 14:18
Пишу вот такое:
Код

//-------------------------------------------------------

#include <stdio>
#include <iostream>
#include <conio>
//-------------------------------------------------------

int main(void)
{
 const char add_str[]="String";
 FILE *add;

 //Создаем и заполняем файл
 add=fopen("file.txt","w+");
 fputs("ThisIsEndOfFile",add);
 fclose(add);

 //Пытаемся запихать туда строчку add_str
 add=fopen("file.txt","a");
 fseek(add,0L,SEEK_SET);
 fputs(add_str,add);

 //Но выводится не ноль, как хотелось бы, а другое число - число конца файла

 printf("Current position of file pointer: %d",ftell(add));
 getch();
}
//-------------------------------------------------------

А надо бы, чтобы указатель был на начале, и String писалось в начало файла. Где я наврал? Почему fseek не пашет? 

Автор: cardinal 20.5.2006, 14:48
Напиши не 
Код

add=fopen("file.txt","a");

а
Код

add=fopen("file.txt","r+");

т.к.
Цитата(MSDN)

When a file is opened with the "a" or "a+" access type, all write operations occur at the end of the file. The file pointer can be repositioned using fseek or rewind, but is always moved back to the end of the file before any write operation is carried out. Thus, existing data cannot be overwritten.
 

Автор: mr.Anderson 20.5.2006, 15:38
Дык... Оно, конечно, хорошо, но мне надо ДОПИСАТЬ, а не переписать тот текст, что был, новым. А дописать как? Вставить текст в начало файла, в общем?  

Автор: jonie 20.5.2006, 15:53
Цитата

Вставить текст в начало файла, в общем?  

http://forum.vingrad.ru/index.php?showtopic=96906
и далее по ссылкам. 

Автор: mr.Anderson 20.5.2006, 16:52
Все, вопрос решился. В смысле, нашел я решение. smile 

Автор: cardinal 20.5.2006, 20:05
Ну так вопрос в следующий раз поточнее поставь тогда... smile 

Из этого
Цитата(sim7 @  20.5.2006,  13:18 Найти цитируемый пост)
А надо бы, чтобы указатель был на начале, и String писалось в начало файла.

это ИМХО не вытекает
Цитата(sim7 @  20.5.2006,  14:38 Найти цитируемый пост)
но мне надо ДОПИСАТЬ, а не переписать тот текст, что был, новым. А дописать как?

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)