Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 21.03.2015
Сообщений: 72
1

Неверная запись в текстовый документ

05.03.2018, 06:39. Показов 530. Ответов 14
Метки нет (Все метки)

Здравствуйте! Ребят, подскажите, при какой причине в текстовый документ вводить мусор? В чем ошибка? А если раскомментировать строку
C
1
 fclose(WRITE_FILE);
, то ошибка какая то большая

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int main (void) {
        int *Array, size;
 
        printf("Введите размер массива - > ");
        scanf("%d", &size);
 
        Array = (int*)malloc(size);
 
        for (int i = 0; i < size; ++ i)
                Array[i] = rand() %100;
 
        printf("Array - > ");
        for (int i = 0; i < size; ++ i)
                printf("%d ", Array[i]);
 
        FILE *WRITE_FILE = fopen("/home/anonymous/Documents/Self-Education/output.txt", "wt+");
        if (WRITE_FILE == NULL) {
                printf("Error! File isn't found! \n");
                return(0);
        } else if (!(WRITE_FILE == NULL)) {
                for (int i = 0; i < size; ++ i)
                        fprintf(WRITE_FILE, "%d\n\r", Array[i]);
 
//              fclose(WRITE_FILE);
        }
 
        printf("\n");
        return(0);
}
Вот такой вот результат записи в фаил:
83 86 77 15 93 35 86 92 49 21 561 0 -72536960 59 23276176 0 23276176 0 23276176 0 23276176 0 23276291 0 23280272
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2018, 06:39
Ответы с готовыми решениями:

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

Запись в текстовый документ
Всем привет ! Имеется класс Рецепт, в котором сеттеры и геттеры, а также конструктор и метод...

Запись в текстовый документ
Дан массив чисел int numbers = { 123, 1312, 324, 87, -312, -6532, -3123123 }; Можно ли его...

Запись массива в текстовый документ
Дан массив строк string stings = { &quot;Hello&quot;, &quot;world&quot;, &quot;1234&quot; }; Как записать его в текстовый...

14
913 / 591 / 291
Регистрация: 22.02.2018
Сообщений: 1,743
Записей в блоге: 2
05.03.2018, 06:47 2
Нормально код работает, странно
0
2 / 2 / 1
Регистрация: 21.03.2015
Сообщений: 72
05.03.2018, 06:53  [ТС] 3
Неверная запись в текстовый документ

Это вот происходит, когда раскомментчиваю строку
И соответственно результат записи
Неверная запись в текстовый документ
0
981 / 727 / 232
Регистрация: 30.06.2015
Сообщений: 3,858
Записей в блоге: 37
05.03.2018, 11:21 4
Нельзя WRITE_FILE заглавными буквами.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11057 / 7012 / 1658
Регистрация: 25.07.2009
Сообщений: 12,778
05.03.2018, 12:13 5
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
Array = (int*)malloc(size);
Даже если не заморачиваться проверками, что вернули scanf() и malloc(), всё равно
C
1
Array = (int*)malloc(sizeof(int) * size);
Дальше не смотрел, наверняка ещё что-нибудь не так...

Добавлено через 2 минуты
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Нельзя WRITE_FILE заглавными буквами.
Почему?
0
3420 / 1966 / 374
Регистрация: 09.09.2017
Сообщений: 8,036
05.03.2018, 13:28 6
C
1
2
3
4
5
if (WRITE_FILE == NULL) {
...
} else if (!(WRITE_FILE == NULL)) {
...
}
Если бы еще одну ветку else с комментарием "а тут чистый profit" я бы еще понял.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Нельзя WRITE_FILE заглавными буквами.
Можно. Не принято, но можно. Еще Array стоило бы назвать с маленькой буквы, это тоже традиция. Кстати, освобождения этого самого Array'а в коде нет, надо бы добавить free(). И проверять успешность выделения памяти, конечно.
После исправления этих ошибок и указанной easybudda'й (про sizeof(int) все работает нормально
0
981 / 727 / 232
Регистрация: 30.06.2015
Сообщений: 3,858
Записей в блоге: 37
05.03.2018, 14:02 7
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Не принято, но можно
Можно запросто нарваться на конфликт имён. В стандарте же ясно сказано
Цитата Сообщение от easybudda Посмотреть сообщение
Почему?
Ну, вроде как обозначения которые начинаются на заглавную зарезервированы для компиляторов. Давно уже приводил соответствующую запись из стандарта, долго искать.
0
3420 / 1966 / 374
Регистрация: 09.09.2017
Сообщений: 8,036
05.03.2018, 15:39 8
Первый раз слышу чтобы подобное было в стандарте. Поиск по нему тоже ничего не дал.
Вообще, существует несколько стилей именования: snake_case (если не ошибаюсь) - через подчеркивание, camelCase - со строчной буквы, каждое новое слово с заглавное, PascalCase - с заглавной буквы, каждое слово тоже с заглавной.
Традиционно для именования переменных используются первые два, а для констант - капсом через подчеркивания. Иногда с заглавной буквы выделяют названия классов.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11057 / 7012 / 1658
Регистрация: 25.07.2009
Сообщений: 12,778
05.03.2018, 15:55 9
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ну, вроде как обозначения которые начинаются на заглавную зарезервированы для компиляторов.
Имена, начинающиеся с подчёркиваний, действительно не рекомендуют давать переменным (заметьте, именно не рекомендуют) по той причине, что разработчики компиляторов их активно используют. А заглавными буквами принято например имена глобальных констант писать, да и в принципе ограничений тут никаких.
0
981 / 727 / 232
Регистрация: 30.06.2015
Сообщений: 3,858
Записей в блоге: 37
05.03.2018, 16:47 10
Цитата Сообщение от easybudda Посмотреть сообщение
А заглавными буквами принято например имена глобальных констант писать, да и в принципе ограничений тут никаких.
В принципе так оно и есть.
Я помню, что там именно рекомендовалось не использовать заглавные буквы.
0
464 / 325 / 107
Регистрация: 02.10.2008
Сообщений: 1,298
Записей в блоге: 1
05.03.2018, 20:53 11
Цитата Сообщение от easybudda Посмотреть сообщение
Дальше не смотрел, наверняка ещё что-нибудь не так...
А-ха-ха. Я посмотрел его код - не увидел. Скопипастил - получаю коредамп и уже минут 15 не могу понять почему. Все точки и запятые перепроверил, а malloc - ну не ложился на него глаз, пока носом не ткнули.
0
981 / 727 / 232
Регистрация: 30.06.2015
Сообщений: 3,858
Записей в блоге: 37
06.03.2018, 12:34 12
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Первый раз слышу чтобы подобное было в стандарте. Поиск по нему тоже ничего не дал.
Вот нашёл, не поленился. Отрывок:
7.1.3 Reserved identifiers

1 Each header declares or defines all identifiers listed in its associated subclause, and
optionally declares or defines identifiers listed in its associated future library directions
subclause and identifiers which are always reserved either for any use or for use as file
scope identifiers.

— All identifiers that begin with an underscore and either an uppercase letter or another
underscore are always reserved for any use...
1 Каждый заголовочный файл определяет все идентификаторы, которые перечисленые в его сопутствующем подклассе, и выборочно определяет или обозначает идентификаторы, которые перечислены в его сопутствующем подклассе будущих библиотек предписаний и идентификаторов, которые всегда зарезервированы либо для любого использования, либо для использования в качестве глобальных идентификаторов.

-- Все идентификаторы, которые начинаются со знака подчёркивания или с заглавной буквы или другого знака подчёркивания - всегда зарезервированы для любого использования.

------------------
Может я ошибся с переводом, и надо перевести так:

-- Все идентификаторы, которые начинаются со знака подчёркивания и заглавной буквы или другого знака подчёркивания - всегда зарезервированы для любого использования.
?
Тогда признаю свою ошибку.
То есть тогда получается, что нельзя: _Afoo или __afoo
Как интерпретировать слово either с последующим or, так как это переводится как (либо ... либо)?

Добавлено через 3 минуты
В общем, всегда зарезервированными являются идентификаторы, которые начинаются со знака подчёркивания и последующей за ним заглавной букве или со знака подчёркивания и следующем за ним другим знаком подчёркивания.
Курите маны, господа...
И зарубим себе это на носу.
2
3420 / 1966 / 374
Регистрация: 09.09.2017
Сообщений: 8,036
06.03.2018, 12:39 13
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Как интерпретировать слово either с последующим or, так как это переводится как (либо ... либо)?
Да, either X or Y переводится как "либо X либо Y", точно также как пара both X and Y как "оба, X и Y", и как пара neither X nor Y как "ни X ни Y".
Получается, индентификаторы, в которых первый символ подчеркивание, а второй либо подчеркивание, либо заглавная буква, зарезервированы. Собственно, лучше считать вообще все, начинающееся со знака подчеркивания, зарезервированным.
1
981 / 727 / 232
Регистрация: 30.06.2015
Сообщений: 3,858
Записей в блоге: 37
06.03.2018, 13:55 14
Уточнённый перевод:
1 Каждый заголовочный файл определяет все идентификаторы, которые перечислены в его соответствующем подпункте, и выборочно определяет или обозначает идентификаторы, которые перечислены в его соответствующем подпункте будущих библиотек предписаний и идентификаторов, которые всегда зарезервированы либо для любого использования, либо для использования в качестве глобальных идентификаторов.

-- Все идентификаторы, которые начинаются со знака подчёркивания с последующей заглавной буквой или другого знака подчёркивания - всегда зарезервированы для любого использования.

Добавлено через 56 минут
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Собственно, лучше считать вообще все, начинающееся со знака подчеркивания, зарезервированным.
Если строго следовать спецификации, то вот так всё-таки можно: _foo(). То есть один знак подчёркивания + прописная буква, - можно.
0
3420 / 1966 / 374
Регистрация: 09.09.2017
Сообщений: 8,036
06.03.2018, 14:11 15
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Если строго следовать спецификации, то вот так всё-таки можно
я и написал "лучше", то есть ставить искусственные рамки Уже естественных чтобы уж наверняка не выйти. Так-то, я частенько использую конструкции вида
C
1
2
3
4
int val;
void set_val(int _val){
  if(any_test(_val))val = _val;
}
или что-то в этом роде. Но это всегда локальные переменные с вполне понятным назначением.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2018, 14:11

Запись данных в Текстовый документ
Мне бы хотелось чтобы полученные данные в моём случаи выводиться ключ но я хочу сделать чтобы...

Запись в текстовый документ (блокнот)
Как осуществить запись в текстовый документ . программа тестирования , необходимо сделать так если...

Запись данных из переменной в текстовый документ
Здравствуйте! подскажите как сделать запись в текстовый документ так что бы в текстовом документе...

Запись данных с COM порта в текстовый документ
Добрый день, Уважаемые Форумчане! Задача следующая: Необходимо подключиться к прибору по COM...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru