Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> С++ файловые ввод и вывод, помогите) 
:(
    Опции темы
JTV
Дата 12.5.2012, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.10.2011

Репутация: нет
Всего: нет




Помогите, пожалуйста, очень прошу:) В проге слово "odin" нужно заменить на "1". У меня появилось два вопроса:
1) в текстовом файле, откуда я считываю, введено:
odin
odin
Так вот, я решила, чтобы понять, что не так, я стала выводить каждый элемент считываемой строки и его порядковый номер.
Сначала, я считывала по 4 символа, пробовала по 5) но тогда он считывает не так, как нужно: появляются пробелы посреди слова, и тогда программа работает неправильно.
А когда стала по 6, то все нормально. мой вопрос №1: Почему нужно считывать на 2 символа больше, чем в строке их?
2)у меня в этой же программе используется символьный массив. мне нужно заменить слово "odin" на "1" , не вставляя вместо остальных символов пробелы...вот когда я пишу вместо одного элемента NULL, то весь массив обнуляется и туда больше не записывается 1, если я присваиваю ''(пустоту), то пишет ошибку...вопрос №2:как же элемент массива сделать пустым? 
помогите, пожалуйста.
вот код программы на с++:

Код
#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
using namespace std;
int main(void){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    FILE *intf, *outf;
    char stroka[4];
    char slovo1[4]={'o','d','i','n'};
    int i,k,j;
    intf=fopen("D:\\yes.txt","r");
    outf=fopen("D:\\yes_yes.txt","w");
    k=0;
    j=0;
    while(fgets(stroka,4,intf)!=NULL){
        for (i=0;i<4;i++){
        cout<<"stroka="<<stroka[i]<<endl;
        cout<<"i="<<i<<endl;
        //cout<<"slovo="<<slovo1[i]<<endl;
        if (stroka[i]==slovo1[j]) {
            k=k+1;
            //cout<<"k="<<k<<endl;
        }
        j=j+1;
        if (j>3) j=0;
        if (k==4){
            //cout<<"flad";
            stroka[0]='1';
            stroka[1]=NULL;
            stroka[2]=NULL;
            stroka[3]=NULL;
        k=0;}
    
        }}


    fprintf(outf,"%s",stroka);
    fclose(outf);
    fclose(intf);
    getch();
    return 0;}

PM MAIL   Вверх
bsa
Дата 12.5.2012, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Если не секрет, зачем мешаешь С++ и С? читать слова (отделенные друг от друга пробельным символом) можно с помощью оператора >>:
Код
#include <fstream>
#include <string>
...
std::ifstream ifile("d:\\yes.txt");
std::string word;

while(ifile >> word) {
  ... //word содержит слово
}

PM   Вверх
JTV
Дата 12.5.2012, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.10.2011

Репутация: нет
Всего: нет



а я по примеру делаю) как в файлике, который нам скидывали
PM MAIL   Вверх
feodorv
Дата 12.5.2012, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(JTV @  12.5.2012,  16:44 Найти цитируемый пост)
Почему нужно считывать на 2 символа больше, чем в строке их?

Это гадание. Задайте исходный файл таким:
Цитата

odin
 odin
  odin
   odin
    odin
...

и посмотрите, что будет. 2 символа (а, видимо, это были \r\n) не спасут...


Цитата(JTV @  12.5.2012,  16:44 Найти цитируемый пост)
я считывала по 4 символа

Так задачу не решить. Проще всего будет считать файл в память целиком (если он небольшой), и уже в этой памяти заменять "odin" на "1"...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.