C/C++

Испортил диск D: кодом (Си)

Испортился диск D этим кодом.
int main (void)
{
FILE*file=fopen("D:/New folder/tessfgt.txt", "a+");
char arr[]={"Hello Wonderful World"};
fwrite(arr, 1, strlen(arr), file);
fseek(file, 0, SEEK_SET);
return 0;
}
Удалился Диск D:
Появился как неопределённая область в настройках.
Пришлось партиционировать заново. Вся информация на диске уничтожилась.
Теперь этот код вообще не работает. Не пишет в файл.
Что происходит?
// В целях исключения непредвиденных последствий, Microsoft настоятельно рекомендует использовать потокобезопасные функции

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
const char* path = "D:\\New folder\\tessfgt.txt";
FILE* file = NULL;
errno_t err = fopen_s(&file, path, "w+");
system("chcp 1251 > nul");
// Прежде чем что-то добавить в конец файла, нужно записать в него текст
// Для успешной записи все каталоги, указанные в пути должны существовать!
if (err) {
if (err == ENOENT) puts("Ошибка: отсутствует каталог!");
else puts("Неизвестная ошибка!");
system("pause > nul");
} else {
fputs("Film, film, film...", file);
fclose(file);
}
const char* line = "\nTo be or not to be...";
err = fopen_s(&file, path, "a+");
// А здесь должен существовать и укзанный в пути файл
if (err) {
if (err == ENOENT) puts("Ошибка: указанные файл или каталог не существуют или их не удалось найти!");
else puts("Неизвестная ошибка!");
system("pause > nul");
} else {
fwrite(line, sizeof(char), strlen(line), file);
fclose(file);
}
return 0;
}

P.S. О других ошибках подробно здесь:
https://docs.microsoft.com/ru-ru/cpp/c-runtime-library/errno-constants?view=msvc-170

P.P.S. Каким боком вы в код пристроили fseek, при этом забыв закрыть открытый файл, мне не понятно.
Константин Дармохид
Константин Дармохид
63 641
Лучший ответ
Semen Gvard В update mode ("a+") можно вызывать функцию fseek:

When a file is opened with update mode ( '+' as the second or third character in the mode argument), both input and output may be performed on the associated stream. However, the application shall ensure that output is not directly followed by input without an intervening call to fflush() or to a file positioning function ( fseek(), fsetpos(), or rewind()), and input is not directly followed by output without an intervening call to a file positioning function, unless the input operation encounters end-of-file.
Роман Колдин Ухаха)) Буква исчезла D: жёсткого диска. Данные не удалились. Всё осталось на месте. А партиционировал я какой то неиспользованный участок диска.
в пути замени / на \\
и fclose не забудь

насчёт диска как-то неправдоподобно звучит, но т. к. это винда, то хз вообще, может, из-за прямого слеша fopen получил дескриптор на весь диск, хз... бред какой-то если честно
Артур Белев
Артур Белев
36 956
Роман Колдин Я много раз этот код писал, но проблема с ним только сейчас.
То что вы посоветовали не помогает.
Лазарь Павлиди Прямой слеш / тоже работает.
и как ты его мог испортить то? у тебя идет запись в файл и если не ошибаюсь по памяти то этот атрибут а+ дает создание если не существует файла
Ильнар Гаязов
Ильнар Гаязов
20 993
Ильнар Гаязов у тебя винда я так понимаю?
Роман Колдин Windows
Я не знаю как. Но комп у меня лет 10 без изменений и поломок. Испортился кодом.
Роман Колдин Потому что нечто подобное со смартфоном было например. Просто кладёшь на смартфон файлы и летит ОС.
А эти события связаны, потому что есть последовательность. Запустил код, диск исчез.
Роман Колдин Эти команды в cmd не работают
Роман Колдин Чудеса. В режиме ПК-Смартфон по УСБ в одном смартфоне так было. Даже проверял не совпадение ли это. Что стоило дополнительных часов установки левой ОС.
А Файл начал писаться, может драйвера установились. Несколько раз перезагружал.
Только как и раньше создаются файлы не по тому пути, который указал.
Все файлы у меня создаются здесь:

Роман Колдин Что не парить? Про смартфон? Может модель сказать не знаю. правда
Роман Колдин Определённым образом надо перекидывать файлы. Перетаскиванием
Роман Колдин Я сам тогда офигел когда 2 раза по одной и той же причине переустанавливал ОС
Роман Колдин Прошивку. О смартфоне речь
Роман Колдин Какие то проблемы с правами доступа думаю. Что то надо менять.
Роман Колдин Почему файл не сохраняется по указанному пути.
Роман Колдин Или просто ждать очередной поломки диска D:
Роман Колдин Две IDE не могут сохранить файл по указанному пути. Только Visual Studio правильно сохраняет
Роман Колдин Ухаха)) Буква исчезла D: жёсткого диска. Данные не удалились. Всё осталось на месте. А партиционировал я какой то неиспользованный участок диска.