Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Радио плеер https://www.cyberforum.ru/ cpp-beginners/ thread630531.html
Решил написать кросс платформенный радио плеер (потоковый Icecast2). Куда копать? И с чего лучше начать?
C++ Выделение и освобождение памяти в c++
Не давно наткнулся на такую замечательность : system("PAUSE");//1 раз int *p = new int; // память system("PAUSE");//2 раз delete p;// нет память Запускаю программу,смотрю скока мемори...
Ошибка в подсчете количества инверсий C++
Здравствуйте, помогите разобраться с подсчетом количества инверсий, в случае повторяющихся элементов. Количество элементов в массиве 65537, максимальное значение 10^9, элементы не отрицательные,...
C++ Контейнерные классы Есть некоторое сомнения, помоготи пожалуйста: Если у меня есть например такой код: vector<int> * pmyvec; pmyvec->push_back(3); pmyvec->push_back(4); delete pmyvec; Есть ли в этом коде... https://www.cyberforum.ru/ cpp-beginners/ thread630506.html
C++ Обьяснить программу (Принципи ее работы) https://www.cyberforum.ru/ cpp-beginners/ thread630498.html
Здравствуйте! Есть программа: #include <stdio.h> #include <memory.h> struct arrInt { char * data; int length;
C++ Как достать указатель на объект из контейнера set
Имеется вот такой код #include "stdafx.h" #include <string> #include <iostream> #include <fstream> #include <set> #include <conio.h> using namespace std;
C++ Значение указателей (*ptr.) на пустые ячейки памяти
Здравствуйте, уважаемые форумчане! С началом изучения С++ стало возникать множество вопросов. Когда резервируется свободная память некоторого типа, то значения указателей к этим ячейкам выглядят...
C++ Указатель на массив указателей на объекты, передать в метод объекта Здравствуйте! Нужно решить задачу, есть такой класс. class MyClsDisk { public: void SetDiskOnPurpose(MyClsDisk *p,int ix, MyClsDisk **a) { ... https://www.cyberforum.ru/ cpp-beginners/ thread630423.html
C++ Адресное пространство https://www.cyberforum.ru/ cpp-beginners/ thread630408.html
Адрес в сипп является 4байтным числом. Возможно ли модифицировать адрес так, что бы залезть в другие процессы? Или для каждого процесса выделяется "локальное" адресное пространство?
C++ Интерфейс в VS2010 :facepalm:При программировании хочу видеть описание типов, помниться мне что была какая та такая форма интересная например выбераешь мышкой структуру WNDCLASS например и в форме в низу ее свойства... https://www.cyberforum.ru/ cpp-beginners/ thread630407.html
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 9
0

Дополнение char строк пробелами при записи их в файл

30.07.2012, 06:11. Просмотров 1884. Ответов 4
Метки (Все метки)

Пытаюсь написать простенькую прогу, создающую базу данных имен и номеров сотрудников в файле. Столкнулся со следующей проблемой: при записи строк, имеющих длину меньше длины массива, в файл они дополняются мусором - примерно так: Ivan ММММММММММIvanov ММММММММ12345 МММММММММ.
При попытке их последующего получения из файла и записи в переменные они также имеют мусорные символы.

Собственно вопрос - как этого можно избежать?

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
52
53
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
 
int main()
{
    int num = 0;
    
    char fname[15];
    char lname[15];
    char number[15];
 
    cout << "Enter employee first name: ";
    cin.getline(fname, 15);
 
    cout << "Enter employee last name: ";
    cin.getline(lname, 15);
 
    cout << "Enter employee phone number: ";
    cin.getline(number, 15);
 
    cout  << fname << " " << lname << " " << number << "\n";
 
    ofstream out("testdb.txt", ios::out | ios::binary);
    if(!out){cout << "Unable to open database file.\n"; return 1;}
 
    out.seekp((50*num), ios::beg);
    out.write(fname, 15);
    out.seekp((50*num)+15, ios::beg);
    out.write(lname, 15);
    out.seekp((50*num)+30, ios::beg);
    out.write(number, 15);
 
    out.close();
 
    ifstream in ("testdb.txt", ios::in | ios::binary);
    if(!in){cout << "Unable to open database file.\n"; return 1;}
 
    in.seekg((50*num), ios::beg);
    in.getline(fname, sizeof fname);
    in.seekg((50*num)+15, ios::beg);
    in.getline(lname, sizeof lname);
    in.seekg((50*num)+30, ios::beg);
    in.getline(number, sizeof lname);
    
    cout  << fname << " " << lname << " " << number << "\n";
 
    in.close();
 
    system("PAUSE");
    return 0;
}


Вернуться к обсуждению:
Дополнение char строк пробелами при записи их в файл
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2012, 06:11
Готовые ответы и решения:

Перевод строк при их записи в текстовый файл
Как сделать перевод строк при их записи в текстовый файл (CArchiv::WriteString())? не подойдет,...

Файлы, дополнение строк пробелами
Считая что не пустой текстовый файл t не пустой разбит на строки длина каждой из которых не...

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

Дублирование строк при записи в файл из DataGridView
Не понятно почему 2 первые строки одинаковые выведены в текстовый файл? когда в DataGridView1...

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