0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 26
|
|||||||||||
1 | |||||||||||
Удаление строки из файла\либо удаление самого файла.30.05.2009, 15:12. Показов 11240. Ответов 9
Метки нет (Все метки)
День добрый, вот функция(используемые переменные объявленны ранее):
Вообще задача состоит в удалении строки с найденным значением Num(в первом поле). Пробовал через tmpfile() создать новый файл и вести запись строк не удовлетворяющих условию поиска в него, сообщений об ошибке нет, но при попытке чтения из этого "временного файла" не выводит никакой информации, какие-то 3-4 посторонних символа и всё. З.Ы. Как показала практика - невозможно открыть файл для чтения и сразу писать в него? То есть я не могу найденную строку удалить из исходного файла, не прибегая к посторонним? Собственно, перепробовав множество различных вариантов - остановился на создании нового фала, в который будет производится запись, а затем удалении оригинала и переименовании созданного. Добавлено через 17 минут 15 секунд Так, по поводу удаления разобрался, дело было в функции
0
|
30.05.2009, 15:12 | |
Ответы с готовыми решениями:
9
Удаление символа перевода строки из самого конца файла Удаление строки из файла Удаление строки из файла Удаление строки файла |
30.05.2009, 15:50 | 2 |
> Собственно, перепробовав множество различных вариантов - остановился
> на создании нового фала, в который будет производится запись, а затем > удалении оригинала и переименовании созданного. Именно так и надо делать > Теперь интересует только возможность работы именно с временным, > а не промежуточным файлом Чем в твоём понимании временный отличается от промежуточного?
0
|
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 26
|
|
30.05.2009, 15:58 [ТС] | 3 |
Промежуточный мы создаем самостоятельно, указывая параметры и удаляя по завершении. А временный, как я понял из tmpfile() -по завершении удаляется сам, да и где он создается я так и не нашел.
0
|
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 26
|
||||||||||||||||
30.05.2009, 16:45 [ТС] | 5 | |||||||||||||||
Да, как вообще использовать tmpfile()?
маны читал, там указана только запись во временный файл, а, повторюсь, при попытке чтения из него у меня выдает 3-4 неизвестных символа и всё. То есть, заменив 14-27ю строки вышеприведенного кода на
0
|
30.05.2009, 18:30 | 6 |
tmpfile тебе возвращает открытый на запись файл. Его имя, насколько я себе это представляю, недоступно. Чтобы что-то из него прочитать, нужно его сначала закрыть, а потом открыть на чтение, а поскольку имя тебе недоступно, то открыть ты его уже не сможешь.
Не заморачивайся этим и создай свой файл.
0
|
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
|
||||||
02.06.2009, 11:56 | 7 | |||||
И правда, после закрытия этот файл уже не прочитать. Потому что он удаляется. Но прочитать его очень даже можно. Ниже привожу текст программки, которая принимает от пользователя строку, записывает её в этот файл, а затем её оттуда читает. Для чистоты эксперимента перед чтением я обнуляю буфер, в который строка читается. Контроля границ нет, потому не вводжите строки длиннее 255 символов. Программа записывает только одну строку. Но при желании можно сделать цикл и писать хоть сто одну. Главное не забывать про нулевой байт в конце строки.
З.З.Ы. Для надёжности перед fseek можно вызвать fflush(tmp);
0
|
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
|
|
06.06.2009, 00:26 | 9 |
А иначе какой смысл его создавать? Проверял, правда, только на ВинХР 32-бит. Компилятор DevC++ 4.9.9.2
0
|
06.06.2009, 00:40 | 10 |
0
|
06.06.2009, 00:40 | |
06.06.2009, 00:40 | |
Помогаю со студенческими работами здесь
10
Удаление строки из файла Удаление строки из файла Удаление строки из файла Удаление из файла строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |