Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
Простая программка,вводим строку и сохраняем её в бинарный файл,а потом читаем эти значения с бинарного файла но предварительно подсчитав символы Вот главная программа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. А вот сама функция где и начинаются все проблемы. До применения функции memset мой массив symv забивался мусором и выводил же его. После того как я её применил уже выводится пустая строка и при по шаговой отладке,массив symv пустой,но это понятно. Но почему он не выводит значения с бинарного файла в массив и на экран? От мусора очистил,циклом прохожу по всем символам и считываю их с помощью fread. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 18:21 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otarsА вот сама функция где и начинаются все проблемы.Нет, проблемы начинаются намного раньше. Можешь объяснить смысл этого цикла? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 18:28 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otars Код: plaintext 1. 2. зачем этот цикл???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 18:29 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
White Owl, запись введённой строки символов в файл. циклом прохожу до длины и записываю в бинарный файл и я вам сразу скажу что,то что я ввёл в консоль то и в моём бинарном файле.Прикрепляю скриншот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 18:33 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otarsзапись введённой строки символов в файл. ошибки сначала исправьте fclose(fd); внутри цикла fwrite(&t, sizeof(char), k, fd); - запишет k символов за один вызов fread(&t, sizeof(char), k, fd); - прочитает. если k будет больше длины файла - прочитается сколько есть. проверяйте значение, возвращаемое файловыми функциями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 18:47 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otarsWhite Owl, запись введённой строки символов в файл. циклом прохожу до длины и записываю в бинарный файл Т.е. тебя совсем не смущает, что ты в цикле после первой же записи закрываешь файл? И весь твой цикл становится просто бесполезен. Хотя, он и изначально бесполезен. Если тебе нужно сохранить лишь одну строку, достаточно Код: plaintext 1. без всякого цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 18:52 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otars, По функции calculate_symb: зачем ты передаешь в нее параметры, если не собираешься их использовать? Функцией Код: plaintext 1. ты устанавливаешь указатель позиции в конец файла. Поэтому и считать ничего не можешь. Перед чтением нужно вернуть указатель в начало файла: либо rewind(fd) либо fseek(fd, 0L, SEEK_SET); Если тебе нужно читать по одному символу, то какой смысл выделять память под целую строку? Объяви переменную char и в нее читай. А если по заданию можно читать строку полностью, то опять без всякого цикла читай сразу и без всякого цикла: fread(symv, sizeof(char), fsize, fd); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 19:35 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
DeviLooper, Да мне по заданию нужно считать строку с бинарного файла и записать её в массив а потом уже делать другие операции(отсюда я и параметры не убираю) Но после правки Код: plaintext 1. 2. 3. 4. у меня уже не пишется количество символов как раньше,а пишется 0 А теперь про отстутсвие цикла,результат этого отрезка представлен ниже. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 20:09 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otars, описание fseek - религия не позволяет прочитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 20:17 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otars, Ты извини, конечно, но тебе бы неплохо сперва разобраться какая строка что делает конкретно. Глядишь и вопросов будет меньше. Я же написал - seek нужно выставлять перед чтением из файла, а не вместо твоего seek. Твой прежний код устанавливает позицию в конец, потом считывает ее (т.е. тем самым ты получаешь размер файла): Код: plaintext 1. 2. А вот после этого уже и возвращай указатель в начало: Код: plaintext 1. И потом уже читай из файла. Короче, разберись какая функция что делает, а то у тебя какое-то гадание на кофейной гуще... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 20:17 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
DeviLooper, Спасибо за совет,заработало и кстати цикл мне пригодился.Не выводятся крякозябры. Конечно компилятор показывает что за моей строкой гора мусора,но я присвою нуль-терминал и эту проблему уберу. Я реализовал так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Спасибо,вам за советы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 20:39 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otars, symv - удалить бы надо и FILE *fd - параметром передавать совершенно незачем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 20:47 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otars Код: plaintext 1. 2. 3. 4. 5. А теперь подумай, что у тебя происходит в цикле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 21:10 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otars за моей строкой гора мусора,но я присвою нуль-терминал и эту проблему уберу. Ну да, для строки нужен завершающий '\0'. Не забудь под него память выделить, т.е. не new char[n] , а new char[n+1] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 21:16 |
|
||
|
Бинарный файл и массив символов.
|
|||
|---|---|---|---|
|
#18+
otars Простая программка,вводим строку и сохраняем её в бинарный файл,а потом читаем эти значения с бинарного файла но предварительно подсчитав символы Это ведь классика Код: plaintext 1. 2. 3. Добавьте только counter в тело оператора while ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2016, 03:32 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39285658&tid=2018455]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 166ms |

| 0 / 0 |
