Запись в файл ввода с клавиатуры

249
17 апреля 2017, 05:52

Создаю бинарный файл.Хочу ввести строку с клавиатуры и поместить в файл. Считывается только первое слово до пробела. Как считывать все предложение?

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char str[256] = "";
    FILE * name;
    name = fopen("name.bin", "wb");
    cout << "Вводим строку:";
    cin >> str;
    fwrite(&str,sizeof(str),256,name);
    fclose(name);
    name = fopen("name.bin", "rb");
    fread(&str, sizeof(str), 256, name);
    cout << str;
    fclose(name);
    return 0;
}
Answer 1

Вот так:

cout << "Вводим строку:";
cin.getline(str,256);

Только вот тут

fwrite(&str,sizeof(str),256,name);
fread(&str, sizeof(str), 256, name);

вы записываете и читаете несколько, гм... больше, чем хотелось :)

Пишите просто:

fwrite(str,sizeof(str),1,name);
fread(str, sizeof(str),1,name);

Хотя лично я бы делал так:

int len = strlen(str)+1;
fwrite(&len,sizeof(len),1,name);
fwrite(str,len,1,name);

и

fread(&len,sizeof(len),1,name);
fread(str,len,1,name);
READ ALSO
Запись log сообщения в файл P7 library

Запись log сообщения в файл P7 library

Как записать сообщение в файл? У меня только создает txt файл и все

886
Ограничение ввода в QTableWidget

Ограничение ввода в QTableWidget

Добрый деньПодскажите, пожалуйста, на примере как сделать так, чтобы можно было вводить в ячейки только {-1,0,1}

518
Встраивание Lua в C++ Qt

Встраивание Lua в C++ Qt

Есть приложение C++ Qt и в него нужно встроить логику, написанную на LuaНашел статью на хабре, в которой описывается как это сделать, но она не первой...

299
Разложить число n на k множителей

Разложить число n на k множителей

Всем привет есть такая задача ,надо разложить число n на k множителей или вывести Impossible если это не возможноНе знаю как можно решить

212