С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 1
Регистрация: 30.10.2017
Сообщений: 34
1

Использование chsize, урезание файла до 0

03.11.2017, 21:43. Показов 2076. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня появилась проблема. Я новичок и по этому мне тяжело сходу освоить всю систему работы функций управляющих работой файла. Имея microsoft visual 2017, мне приходится постоянно изменять функции, что я изучаю, на измененные, "более безопасные", потому что ни #pragma warning ни #define _CRT_SECURE_NO_WARNINGS, почему то не отключают изменения. Всё бы хорошо если бы при этом не изменялись параметры функции. Вот столкнулся с очередной проблемой связаной как с fopen -> fopen_s так и с open -> _sopen_s:

Проблема у меня с записью функции chsize(handle, size);

В старой версии было достаточно написать:
C++
1
2
3
int handle;
handle = open("0.txt", "r + t");
chsize(handle; 0);
Сейчас же когда я пытаюсь подстроится под новый тип данных или под новую функцию, выскакивает постоянно ещё что-то.
Понимаю, что толкового ничего не написано, но всё к чему я пришел вот:

C++
1
2
3
    FILE *stream;
    errno_t fp = fopen_s(&stream, "0.txt", "r + t");
    _chsize_s(fp, 0);
Прошу, расскажите, что я понимаю не так и зачем в функции fopen_s появился указатель на указатель файла, то есть как он помогает избежать потерю данных.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2017, 21:43
Ответы с готовыми решениями:

урезание файла
Есть тектовый файл с содержимым. Я его урезаю $rf=fopen('1.txt','w+'); ftruncate($rf,100)...

Функция chsize
Доброе время суток. Как можно изменить размер файла не используя функцию chsize(handle,...

Chsize, breakpoint
Здравствуйте, проблема. Visual Studio 2017 ставит breakpoint после chsize: static bool first...

Chsize, функция, не рабочий параметр
Здравствуйте, проблема: есть код функции и функции мэйна, основные элементы, (пробовал и снаружи...

19
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2017, 22:08 2
Цитата Сообщение от _Sora_ Посмотреть сообщение
потому что ни #pragma warning ни #define _CRT_SECURE_NO_WARNINGS, почему то не отключают изменения
Зайди в свойства проекта и отключи SDL. Надо сразу снимать флажок, когда проект создаёшь.

chsize() не работает с fopen().
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
03.11.2017, 22:37 3
Лучший ответ Сообщение было отмечено _Sora_ как решение

Решение

Цитата Сообщение от _Sora_ Посмотреть сообщение
ни #define _CRT_SECURE_NO_WARNINGS
Где это прописываешь? Выше всех инклудов?

Добавлено через 3 минуты
Цитата Сообщение от _Sora_ Посмотреть сообщение
ни #pragma warning
Так (ниже всех инклудов)?
C++
1
#pragma warning(disable : 4996)
1
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2017, 22:40 4
nd2, да не помогает это. Пока не отключишь - будет показывать ошибку, а не предупреждение.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
03.11.2017, 22:42 5
Цитата Сообщение от nmcf Посмотреть сообщение
да не помогает это
Только в 17-й не помогает?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2017, 22:44 6
Ты предлагаешь отключить предупреждения, но они не мешают компиляции. А если он не может использовать функции, то среда интерпретирует их как ошибки. SDL надо настраивать.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
03.11.2017, 22:49 7
Цитата Сообщение от nmcf Посмотреть сообщение
Ты предлагаешь отключить предупреждения, но они не мешают компиляции.
Ошибок по поводу небезопасных функций не будет (в 15-й так было).
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2017, 22:51 8
У меня это не работало. Да и зачем директивы, если можно кардинально решить вопрос.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
03.11.2017, 22:55 9
Цитата Сообщение от nmcf Посмотреть сообщение
У меня это не работало
В какой студии? Известный метод, и на сайте microsoft советуют. Помню, кто-то из опытных советовал не отключать SDL.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2017, 23:26 10
2010-2012. Я уже не помню. Всегда отключаю сразу.
Цитата Сообщение от nd2 Посмотреть сообщение
кто-то из опытных советовал не отключать SDL
Какой в этом смысл? Тогда надо пользоваться этими поделками и не трогать настройки.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
03.11.2017, 23:39 11
Цитата Сообщение от nmcf Посмотреть сообщение
2010-2012. Я уже не помню.
В 10-й этой проблемы не было (там просто предупреждения выдаются), сам на ней сижу, поэтому в тему SDL не углублялся. На 15-й работает то, что в 3 посте, проверял.
0
4019 / 2565 / 430
Регистрация: 09.09.2017
Сообщений: 11,436
04.11.2017, 10:09 12
Цитата Сообщение от nmcf Посмотреть сообщение
Зайди в свойства проекта и отключи SDL.
Расшифруйте, пожалуйста, SDL. Для меня это всегда было Simple Direct media Layer, библиотека работы с оконной системой, картинками, звуком, сетью и прочим. Тут же явно не это имеется в виду.
_Sora_, покажите весь код, который вызывает такую ошибку. Компилируется ли такое?
C
1
2
3
4
5
6
7
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#include <string.h>
int main(){
  char ch[10];
  strcpy(ch,"AAA");
}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2017, 10:15 13
Стрелкой показано.
Миниатюры
Использование chsize, урезание файла до 0  
1
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2017, 10:16 14
И выше пункт.
0
1 / 1 / 1
Регистрация: 30.10.2017
Сообщений: 34
04.11.2017, 14:51  [ТС] 15
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Расшифруйте, пожалуйста, SDL. Для меня это всегда было Simple Direct media Layer, библиотека работы с оконной системой, картинками, звуком, сетью и прочим. Тут же явно не это имеется в виду.
_Sora_, покажите весь код, который вызывает такую ошибку. Компилируется ли такое?
CВыделить код
1
2
3
4
5
6
7
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#include <string.h>
int main(){
* char ch[10];
* strcpy(ch,"AAA");
}
Проблему с SDL, я решил спасибо) Теперь у меня всё выходит, я сделал с помощью open(). Но интересно как его описать тогда если chsize не работает с fopen_s, с помощью _sopen_s.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2017, 16:27 16
Просто не используй fopen() для этого случая. Только для чтения/записи.
0
1 / 1 / 1
Регистрация: 30.10.2017
Сообщений: 34
04.11.2017, 17:14  [ТС] 17
Цитата Сообщение от nmcf Посмотреть сообщение
Просто не используй fopen() для этого случая. Только для чтения/записи.
Хорошо) Только как тогда правильно использовать для этого случая _sopen_s.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2017, 18:00 18
Ты же отключил эти проверки. Значит, функции без _s используй.
0
1 / 1 / 1
Регистрация: 30.10.2017
Сообщений: 34
04.11.2017, 19:04  [ТС] 19
Цитата Сообщение от nmcf Посмотреть сообщение
Ты же отключил эти проверки. Значит, функции без _s используй.
Ещё на первой странице говорил, всё уже отлично. Просто мне стало интересно как же пользоваться в этом случае более безопасными функциями. Спасибо.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.11.2017, 19:10 20
Открой msdn, там эти функции описаны.
0
04.11.2017, 19:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2017, 19:10
Помогаю со студенческими работами здесь

Урезание значений чисел
Здравия желаю!:) Вследствие периодического возникновения такой проблемы (а точнее по желанию...

Урезание блока до определённой длины
Заранее благодарен тому, кто не полениться написать 2 строчки... Есть блок, нужно узнать длину...

Урезание скорости интернет-соединения
Добрый день, уважаемые форумчане! Сама проблема: После переезда в другую квартиру возникла...

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


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

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