Добрый вечер! Итак, у меня такая проблема: необходимо вывести в текстовый файл некую текстовую, соответственно, информацию. Реализую я это через массив типа char, но в файл выводятся только 4 первых символа. Вот код:
#include <stdio.h>
#include <conio.h>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
void main ()
{
int chc_n,chc_d,i,p;
chc_n = 0;
chc_d = 0;
i=0;
p=0;
char nam[64];
//массив имени
char des[1024];
//массив описания
fstream db("database.txt", ios::in | ios::out | ios::ate); //открываем файл
if (db.fail()) {ofstream db("database.txt"); cout << "file does not exist. it has just been created, relaunch the program, please\n"; goto end;}
else cout << "file exists\n";
//проверяем, существует ли он, если нет - создаем и просим перезапустить ПМ
cout << "Insert name\n";
cin.getline(nam,64);
//считываем имя
while(nam != '\0')
{
chc_n= chc_n+1;
i=i+1;
};
//считаем кол-во символов
cout << "Insert description\n";
cin.getline(des,1024);
//считываем описание
while(des[p] != '\0')
{
chc_d= chc_d+1;
p=p+1;
};
//считаем кол-во символов
cout << nam << "\n";
cout << des << "\n";
cout << chc_n << "\n";
cout << chc_d << "\n";
//это часть не имеет смысла, юзается для проверки значений
db.write(nam, sizeof(chc_n));
db.write(des, sizeof(chc_d));
//вывод в текстовый документ
end:
_getch();
}
Возможно, использовать надо не массив тип char? P.S. честно гуглил - ничего нет. Помогите, пожалуйста!
Другие языки программирования и технологии
C++, вывод char в file.
Вывод в файл:
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
struct Employee {
string name;
string desc;
};
int main() {
fstream db("database.txt", ios::in | ios::out | ios::ate);
if ( db.fail() ) {
cout << "file does not exist. create new\n";
db.open("database.txt", ios::in | ios::out | ios::app);
if ( db.fail() ) return 0;
}
Employee emp;
cout << "Insert name: ";
getline(cin, emp.name);
cout << "Insert description: ";
getline(cin, emp.desc);
db << emp.name << '\0' << emp.desc << '\n';
cin.get();
return 0;
}
Чтение из файла:
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Employee {
string name;
string desc;
};
int main() {
ifstream db("database.txt");
if ( db.fail() ) {
cout << "file does not exist.\n";
return 0;
}
vector<Employee> emps;
Employee e;
while ( getline(db, e.name, '\0') && getline(db, e.desc) ) {
emps.push_back(e);
}
for (auto it = emps.begin(); it != emps.end(); ++it) {
cout << "name: " << it->name << endl;
cout << "description: " << it->desc << endl << endl;
}
cin.get();
return 0;
}
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
struct Employee {
string name;
string desc;
};
int main() {
fstream db("database.txt", ios::in | ios::out | ios::ate);
if ( db.fail() ) {
cout << "file does not exist. create new\n";
db.open("database.txt", ios::in | ios::out | ios::app);
if ( db.fail() ) return 0;
}
Employee emp;
cout << "Insert name: ";
getline(cin, emp.name);
cout << "Insert description: ";
getline(cin, emp.desc);
db << emp.name << '\0' << emp.desc << '\n';
cin.get();
return 0;
}
Чтение из файла:
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Employee {
string name;
string desc;
};
int main() {
ifstream db("database.txt");
if ( db.fail() ) {
cout << "file does not exist.\n";
return 0;
}
vector<Employee> emps;
Employee e;
while ( getline(db, e.name, '\0') && getline(db, e.desc) ) {
emps.push_back(e);
}
for (auto it = emps.begin(); it != emps.end(); ++it) {
cout << "name: " << it->name << endl;
cout << "description: " << it->desc << endl << endl;
}
cin.get();
return 0;
}
db.write(nam, sizeof(chc_n));//записать из nam столько байт, сколько содержиться в chc_n
Еще раз: размер chc_n - тип int - 4 байта. Вот столько ты и записываешь.
Вникать в остальное лень :)
Еще раз: размер chc_n - тип int - 4 байта. Вот столько ты и записываешь.
Вникать в остальное лень :)
Все зависит от информации, если это целые строки - AnsiString array[MAX_PATH],
если числа целые соответственно массив типа Integer, а char это буквенный массив, конечно он подойдет, но могут возникать подобный проблемы, и да в конце делайте delete array; Чтобы избежать утечек памяти
если числа целые соответственно массив типа Integer, а char это буквенный массив, конечно он подойдет, но могут возникать подобный проблемы, и да в конце делайте delete array; Чтобы избежать утечек памяти
Бро, у тебя включена даже библиотека типа string, на кой хрен тебе char? Ты перемудрил.
Стринг это класс таких же текстовых символов, только саморасширяющийся и строка считывается до пробела.
Так же у тебя уже есть fstream, с помощью которого можно удобно выводить в файл.
Примерно так вввод и ввывод в текстовый файл будет выглядеть:
Или я не так понял, что тебе нужно.
Стринг это класс таких же текстовых символов, только саморасширяющийся и строка считывается до пробела.
Так же у тебя уже есть fstream, с помощью которого можно удобно выводить в файл.
Примерно так вввод и ввывод в текстовый файл будет выглядеть:

Или я не так понял, что тебе нужно.
Используй файловый поток как любой другой, а именно выводи информацию через <<.
Похожие вопросы
- c++ возврат char из функции
- Помогите с программой на C++! (Вывод квадратов чисел от 1 до 20). Не знаю, что не так.
- Вывести название массива с помощью char, C++
- [C++] char && char* && char[ ]
- что такое var c: char; в паскале? что такое var c: char; в паскале?
- C++ как переменную (signed int) разделить на старший и младший байт, а после записать в 2е другие переменные типа char?
- C++ Про выбор типа данных. Int, char и т. д.
- C++ Windows Form как ввести в переменную слово, пробовал char - не работает char n; n="1"; - тут возникает ошибка
- C++ char arrays - прошу помощи с задачей.
- C++ весь код находится внутри int main(int argc, char* pszArgs[]) { }