Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
minore
268 / 126 / 43
Регистрация: 05.02.2015
Сообщений: 755
1

Странности при работе с файлами на некоторых ПК

08.04.2017, 11:46. Просмотров 392. Ответов 11
Метки нет (Все метки)

Здравствуйте. id visual studio. есть такая странность: дан код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h> // подключаем библиотеку ввода вывода
#include <string.h> // библиотека работы со строками
 
#include <stdlib.h>
int main()
{
FILE    *output;
fopen_s(&output, "dos.txt", "w"); // открываем выходной файл
if (!output) // выходной файл не создался
printf("no open output file"); // сообщение об ошибке
else
{
char a[] = "first";
fprintf(output, a); // записываем строку
printf("yes");
fclose(output);
}
return 0;
}
на моем ПК этот код работает как задумано, т.е. на экран выводится слово "yes" в папке debug создается текстовый файл со строкой.
не на моем пк (тоже studio 2013) только операционка у меня 8.1 там 7 создается пустой файл, в него данные не записываются, на экран выводится "no". т.е. не смотря на то, что файл создался, не проходит проверка:
C
1
if (!output)
вопрос : почему?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2017, 11:46
Ответы с готовыми решениями:

Ошибка при работе с файлами
Всем привет! Кто подскажет, почему не работает этот код: FILE *file; int i...

Ошибка сегментирования при работе с файлами
Написал программу для считывания символов A из файла, и записи другого файла...

Как ведут себя функции ввода вывода при работе с файлами
Здравствуйте!!! прошу подсказки в отладке данного кода. цель его посмотреть...

Как правильно записывать и считывать двумерные массивы при работе с файлами
Как правильно записывать и считывать двумерные массивы при работе с файлами?...

Некорректная работа программы по работе с файлами - добавляется лишний символ
Доброго времени суток. Есть вот такая вот программа. Она работает корректно, за...

11
CoderHuligan
811 / 536 / 201
Регистрация: 30.06.2015
Сообщений: 2,995
Записей в блоге: 13
08.04.2017, 11:55 2
Цитата Сообщение от minore Посмотреть сообщение
вопрос : почему?
Видимо потому что функция fopen_s является нестандартной функцией языка си.
0
Evg
Эксперт CАвтор FAQ
19634 / 7326 / 551
Регистрация: 30.03.2009
Сообщений: 20,488
Записей в блоге: 30
08.04.2017, 12:10 3
Например, нет прав на запись или что-то такое. В случае неудачной работы функция fopen_s (да и любая другая системная функция) возвращает код ошибки, который можно как минимум распечатать и уже дальше предметно разбираться с вопросом, а не гадать. Коды ошибок можно посмотреть, например, в документации https://msdn.microsoft.com/en-us/library/t3ayayh1.aspx
1
minore
268 / 126 / 43
Регистрация: 05.02.2015
Сообщений: 755
08.04.2017, 12:20  [ТС] 4
"""Видимо потому что функция fopen_s является нестандартной функцией языка си."""
не, мимо. не поэтому. компиляторы одинаковы, id - таже, версия таже, значит и работать одинаково должна.

Добавлено через 2 минуты
там дело в том, что не только не записать, но и не прочитать ничего. на чтение тоже файл не открывается.
0
Evg
Эксперт CАвтор FAQ
19634 / 7326 / 551
Регистрация: 30.03.2009
Сообщений: 20,488
Записей в блоге: 30
08.04.2017, 12:35 5
Пока не посмотришь на код ошибки, можно только гадать
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
08.04.2017, 15:45 6
minore, у вас в строке 14 не указан формат %s
0
Evg
08.04.2017, 15:51
  #7

Не по теме:

Цитата Сообщение от LFC Посмотреть сообщение
minore, у вас в строке 14 не указан формат %s
На правильность исполнения в конкретно данном случае это не влияет

0
easybudda
Модератор
Эксперт CЭксперт С++
10209 / 6108 / 1536
Регистрация: 25.07.2009
Сообщений: 11,608
08.04.2017, 19:07 8
minore, но исполняемый файл при этом создаётся? Можно попробовать его от имени администратора запустить, а то и саму студию...
0
Evg
Эксперт CАвтор FAQ
19634 / 7326 / 551
Регистрация: 30.03.2009
Сообщений: 20,488
Записей в блоге: 30
08.04.2017, 20:06 9
А я изначальный вопрос понял как "бинарник компилируется на одной машине, а запускается на разных"
0
minore
268 / 126 / 43
Регистрация: 05.02.2015
Сообщений: 755
09.04.2017, 12:09  [ТС] 10
итак, проблема решена, но не понята:
во-первых, компилировал прогу на разных машинах в одной версии студии, т.е. на разных машинах - разные экзешники.
так вот: у меня проверка:
C
1
 if (!output) // выходной файл не создался
проходила, на другом пк нет. тогда воспользовался вашим советом и сделал так:
C
1
2
int r =fopen_s(&output, "dos.txt", "w"); // открываем выходной файл
printf("%d", r);
что я получил? правильно, 0. т.е. ошибки никакой нет. и тогда я заменил проверку:
C
1
if (!output) // выходной файл не создался
на
C
1
if (r !=0) // есть ошибка
и все заработало. опять же непонятки, почему на разных машинах разный код нужен.
0
CoderHuligan
811 / 536 / 201
Регистрация: 30.06.2015
Сообщений: 2,995
Записей в блоге: 13
09.04.2017, 13:28 11
Цитата Сообщение от minore Посмотреть сообщение
так вот: у меня проверка:
CВыделить код
1
*if (!output) // выходной файл не создался
Так ё моё, - ты же проверяешь хэндл файла, а не возвращаемое значение! Так нельзя, и больше того: глупо.
Правильно:
Цитата Сообщение от minore Посмотреть сообщение
на
CВыделить код
1
if (r !=0) // есть ошибка
и все заработало. опять же непонятки, почему на разных машинах разный код нужен.
Добавлено через 1 минуту
Цитата Сообщение от minore Посмотреть сообщение
почему на разных машинах разный код нужен
Вот поэтому и непонятки.
0
minore
268 / 126 / 43
Регистрация: 05.02.2015
Сообщений: 755
09.04.2017, 13:42  [ТС] 12
не ну может и не логично. только почему на одной машине прокатывает, на другой нет?
0
09.04.2017, 13:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 13:42

Комп выключается при работе в инете и некоторых прогах
Всем привет у меня такая проблема- При работе в интернете комп выключается а...

Ошибка при работе с файлами
Всем привет! Подккажите, плиз, что у меня неправильно в коде: #include...

Многопоточность при работе с файлами
Доброй ночи! Написал код для сравнения двух файлов: string...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru