0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 12
1

Посимвольная запись в файл

30.10.2015, 23:04. Показов 7126. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте !
Ни как не могу ничего нагуглить, задача:
Создать текстовый файл, имя файла вводится с клавиатуры. Внести в него данные и вывести их на экран посимвольно.
Нужно использовать char.
Проблема в том что в char пробелы не записываются, подскажите как это можно исправить ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(){
    char *fileBuf = new char[200];
    ofstream file("qwe.txt");
    for(int i=0;i<199;i++){
        cin >> fileBuf[i];
        file << fileBuf[i];
        if(fileBuf[i] == '|'){ //Если ввести символ '|', завершается воод.
            fileBuf[i] = '\0';
            break;
            }
        }
    cout << fileBuf;
    
    
    delete []fileBuf;
    return 0;
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2015, 23:04
Ответы с готовыми решениями:

Посимвольная запись в строки из файлов
Доброго времени суток. После долгого больничного пытаюсь разобраться со вторым семестром! :)...

Посимвольная запись из консоли в динамический массив
Доброго времени суток! Хочу посимвольно ввести строку из консоли в динамический массив, а в итоге...

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

Посимвольная запись/чтение массива в файл
Как реализовать, чтобы при нажатии кнопки числа записывались массивом в файл посимвольно, и потом...

4
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
30.10.2015, 23:39 2
Объект cin читает ввод до пробела,по умолчанию символ пробела означает конец ввода и никакие символы после него не считываются.
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(){
    char *fileBuf = new char[200];
 
    int index = 0;
 
    cin.get(fileBuf[index]);
    while (fileBuf[index] != '|' && fileBuf[index] != '\n'){
        index++;
        cin.get(fileBuf[index]);
    }
    fileBuf[index] = 0;
 
 
    ofstream file("qwe.txt");
        file << fileBuf;
    file.close();
 
 
    ifstream file2("qwe.txt");
    for (int i = 0; !file2.eof(); i++){
        cout << (char)file2.get();
    }
    file.close();
 
    delete [] fileBuf;
 
    system("PAUSE");
    return 0;
}
0
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 12
31.10.2015, 00:37  [ТС] 3
Спасибо ! Не могли бы вы пояснить некоторые моменты "вопросы в коментариях".
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(){
    char *fileBuf = new char[200];
 
    int index = 0;
 
    cin.get(fileBuf[index]);
    while (fileBuf[index] != '|' && fileBuf[index] != '\n'){ //Операция конъюнкция "и", а срабатывает при одном из условий. 
        index++;
        cin.get(fileBuf[index]);
    }
    fileBuf[index] = 0; //Зачем это ? 
 
 
    ofstream file("qwe.txt");
        file << fileBuf;
    file.close();
 
 
    ifstream file2("qwe.txt");
    for (int i = 0; !file2.eof(); i++){
        cout << (char)file2.get();
    }
    file.close();
 
    delete [] fileBuf;
 
    system("PAUSE");
    return 0;
}
и ещё цикл while выполняется даже если я укажу больше 200 символов, куда будут записываться символы ?
0
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
31.10.2015, 12:09 4
Цитата Сообщение от pululun Посмотреть сообщение
fileBuf[index] = 0; //Зачем это ?
Нулевой байт в конце строки. Эквивалентно (fileBuf[index] = '\0'). Нужен чтобы понимать где заканчивается строка.
Иначе
Цитата Сообщение от pululun Посмотреть сообщение
file << fileBuf;
будет писать в файл символы пока не встретит '\0'.

Цитата Сообщение от pululun Посмотреть сообщение
//Операция конъюнкция "и", а срабатывает при одном из условий.
Конъюнкция возвращает true только если 2 условия выполнены, в данном случае если не обнаружен '\n'(перевод строки записывается после нажатия Enter) и не обнаружен знак '|' то ввод продолжается.
1
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 12
31.10.2015, 16:27  [ТС] 5
Ещё раз спасибо !
0
31.10.2015, 16:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2015, 16:27
Помогаю со студенческими работами здесь

вывод строки и посимвольная запись
начал делать одну задачу, и столкнулся с вельме странной проблемой - элементарно не выводится...

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

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

Буфер клавиатуры / посимвольная запись и чтение / tasm
Здравствуйте, кто может помочь написать программу на assembler? Задача: Ввести с клавиатуры...

Запись в файл - проверить, не идет ли в него запись, чтобы не генерировалось исключение
Доброе время суток! Вот такой пример: Imports System Imports System.IO Module Module1 ...

Пожалуйста напишите программу, которая добавляет запись в типизированый файл тип - запись
Которая добавляет запись в типизированый файл тип - запись добавляет к той записи в файле...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru