Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811

Чтение из файла, не все числа читаются в потоке

22.02.2015, 21:40. Показов 780. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Написал программку которая создает массив из случайных символов, записывает его в файл и читает потом файл в другой массив. Та вот почему то читает не все.... а только 1/4 где то...

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "StdAfx.h"
#include <fstream>
#include <iostream>
#include <windows.h>
#include <time.h>
 
 
int main()
 
{
    setlocale(LC_ALL, "Russian");
    const int razmer = 1024;
    char asd[razmer] = { 0 };
    char a[] = "file.txt";
 
    //создание массива с контрольными числами
    std::fstream myfile;
    myfile.open(a, std::ios_base::out);
    char randomDigits[razmer] = {0};
    srand(time(NULL));
    std::cout << " Массив сгенерированный " << std::endl;
    std::cout << " Запись в файл " << std::endl;
    if (myfile.is_open())
    {
        for (int i = 0; i < razmer; ++i)
        {
            randomDigits[i] = rand() % razmer * 10;
            myfile << randomDigits[i];
            std::cout << std::hex << randomDigits[i] << " ";
        }
        myfile.close();
    }
 
    std::cout << " " << std::endl;
    Sleep(1000);
    std::cout << " Чтение из файла " << std::endl;
    myfile.open(a, std::ios_base::in);
    if (myfile.is_open())
    {
        for (int i = 0; i < razmer; ++i)
        {
            Sleep(10);
            asd[i] = myfile.get();
            std::cout << std::hex << asd[i] << " ";
        }
        myfile.close();
    }
    system("pause");
    
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2015, 21:40
Ответы с готовыми решениями:

Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа)
Вывести на экран все числа палиндромы (т.е числа которые читаются одинаково как слева, так и справа) из заданного интервала натурального...

Не читаются числа из файла txt
Здравствуйте, форумчане. Собственно сабж. В txt файле (UTF-8) записаны 2 числа в разных строках. При чтении получается что то совсем...

Чтение файла в потоке
Доброго времени суток, пишу небольшой парсер файла. Столкнулся с проблемой, в C++ Builder алгоритм не работает(не заполняется string a). До...

12
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.02.2015, 22:56
Пробел добавляй после числа и считывай не get(), а >>.
0
0 / 0 / 0
Регистрация: 16.02.2015
Сообщений: 27
23.02.2015, 00:47
например так
C++
1
 myfile>>a;
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
23.02.2015, 18:51  [ТС]
Я так писал
C++
1
myfile >> asd[i];
результат тот же...
не совсем понял куда и зачем добавлять пробелы?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.02.2015, 19:06
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cctype>
 
        for (int i = 0; i < razmer; ++i)
        {
            do
            {
                randomDigits[i] = rand() % 256 - 128;
            }
            while (!isgraph(randomDigits[i]));
            myfile << randomDigits[i];
            std::cout << std::hex << randomDigits[i] << " ";
        }
        myfile.close();
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
23.02.2015, 19:19
Мое предложение генерить цифры '0' - '9'
C++
1
            randomDigits[i] = rand() % 10+'0';
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
23.02.2015, 19:35  [ТС]
Выдает ошибку.... и я не совсем понял что тут и как...
Миниатюры
Чтение из файла, не все числа читаются в потоке  
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
23.02.2015, 19:43  [ТС]
Мне нужны символы все 256 что может хранить один байт
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
23.02.2015, 20:11
Тогда так
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < razmer; ++i)
        {
            do
            {
                randomDigits[i] = rand() % 256 - 128;
            }
            while (!isgraph(randomDigits[i]));
            myfile.write(&randomDigits[i],1);
            std::cout << std::hex << (unsigned int)randomDigits[i] << " "; //надо приводить, иначе будет выводить символ
        }
        myfile.close();
соответственно, чтение
C++
1
2
3
4
5
6
for (int i = 0; i < razmer; ++i)
        {
            Sleep(10);
            myfile.read(&asd[i],1);
            std::cout << std::hex <<  (unsigned int)asd[i] << " ";
        }
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.02.2015, 20:23
Чтение тогда можно без цикла.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
23.02.2015, 20:32
Предлагаю массив сделать unsigned char и писать в двоичном коде весь массив сразу
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <fstream>
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int razmer = 128;
    char a[] = "file.txt";
 
    //создание массива с контрольными числами
    std::fstream myfile;
    myfile.open(a, std::ios_base::out);
    unsigned char randomDigits[razmer] = {0};
    srand((unsigned)time(NULL));
    std::cout << " Массив сгенерированный " << std::endl;
    std::cout << " Запись в файл " << std::endl;
    if (myfile.is_open())
    {
        for (int i = 0; i < razmer; ++i)
        {
            randomDigits[i] = rand() % 255+1; // коды от 1 до 255
            std::cout << std::hex << (unsigned int)randomDigits[i] << " "; 
        }
        std::cout<< std::endl;
        myfile.write((char*)randomDigits,razmer);
        myfile.close();
 
        Sleep(1000);
        std::cout << " Чтение из файла " << std::endl;
        myfile.open(a, std::ios_base::in);
        if (myfile.is_open())
        {
            unsigned char asd[razmer] = { 0 };
            myfile.read((char*)asd,razmer);
            for (int i = 0; i < razmer; ++i)
                std::cout << std::hex <<  (unsigned int)asd[i] << " ";
            std::cout<<std::endl;
            myfile.close();
        }
    }
 
    system("pause");
    return 0;
}
1
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
24.02.2015, 06:38  [ТС]
Спасибо! во всем разобрался.... не читал я так понимаю до конца т.к. чтение шло только до пробела....

Добавлено через 32 минуты
надо все таки добавлять проверку при генерации:
C++
1
2
3
4
5
do
            {
                randomDigits[i] = rand() % 255+1; // коды от 1 до 255
            }
             while (!isgraph(randomDigits[i]));
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
24.02.2015, 08:24
Цитата Сообщение от eagl69 Посмотреть сообщение
проверку при генерации
Если Вам нужны числа >32 можно написать
C++
1
randomDigits[i] = rand() % (255-32)+33; // коды от 33 до 255
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2015, 08:24
Помогаю со студенческими работами здесь

Чтение файла в потоке и регулярные выражения
Доброго времени! Дали задание написать небольшой парсер из файла. Файл не текстовый, а результат работы аппаратной системы (в нем...

QThread чтение файла в другом потоке
Здравствуйте. Нужна помощь в следующем: Есть оконная программа, в которой мы читаем данные из файла и записываем их в массив. Все...

Запись и чтение из файла в файловом потоке
Всем привет FileStream tests = new FileStream(&quot;D://test.txt&quot;, FileMode.Create); StreamReader read = new...

[КуМир] Найти в массиве все числа-палиндромы
алг цел Сумма перевёртышей (цел N, аргрез целтаб A) дано | Целочисленный массив A надо | Найти в массиве A все числа-перевертыши,...

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru