Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Запись в файл


Автор: Iren21 15.4.2010, 22:43
В цикле не записываются данные в файл!?

Код
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>


void errorF(char *fn){
    cerr << "\n Ошибка при открытии файла " << fn << endl;
    exit(1);
}

int main(){
    char *fn;
    int s;
    fn = "file";
    FILE *fp;

    if((fp = fopen(fn,"w")) == NULL) errorF(fn);
    else{
        while((s = getch())!= 27){
        putc(s, fp);
        }
    }
        return 0;
}



Модератор: не забываем пользоваться кнопочкой "Код"

Автор: smalcom 15.4.2010, 23:12
1. рекомендую не писать вот так
Код

(fp = fopen(fn,"w")) == NULL
....
(s = getch())!= 27


2. открытый файл надо закрыть

Добавлено через 1 минуту и 37 секунд
1. рекомендую не писать вот так
Код

(fp = fopen(fn,"w")) == NULL
....
(s = getch())!= 27


2. открытый файл надо закрыть

Автор: djamshud 15.4.2010, 23:25
>рекомендую не писать вот так

Почему? Предпочитаете размазывать код в столбик?

Автор: borisbn 16.4.2010, 06:12
djamshud, код должен читаться в одном направлении - сверху вниз, а этот код ни читать, ни, тем более, отлаживать невозможно


Автор: djamshud 16.4.2010, 10:13
Предрассудки такие предрассудки. Код читается замечательно. А у вас, borisbn, видимо осадок от ассемблера, где код в стройные три столбца.

Автор: jhonyxakep 16.4.2010, 14:34
Код

#include <iostream.h>
//#include <fstream.h> //нафига???
#include <stdlib.h>
#include <conio.h> 
#include <stdio.h>

using namespace std;

void errorF(char *fn)
    {
        cerr << "\n Ошибка при открытии файла " << fn << endl;
        exit(1);
    }

int main()
 {
    char *fn;
    int s;
    fn = "file";
    FILE *fp;
    
    if((fp = fopen(fn,"w")) == NULL) errorF(fn); else
        {
          while((s = getch())!= 27)
            {
              putc(s, fp);
            }
        }
        
    fclose(fp);
    return 0;
 }

Iren21, во 1 в форуме есть нопочка с надписью "Код", во 2 зачем вам нужен fstream? Для открытия потока fopen хватает iostream. В 3 научитесь оформлять код, на самом деле нечитаемо не разу.



djamshud, ну если это считается нормальным оформлением, то сложно представить какой код вы пишите... smile 


Во блин, даже (до редактирования) скобки неправильно расставил...

Автор: smalcom 16.4.2010, 21:51
Цитата

Предрассудки такие предрассудки.

перед тем как писать такие "хакерские вые...оны" нужно получить рабочий код. а еще домашнее задание: найти отладчик, который может ставить бряки на любую операцию в одной строке для исходника на Си


Автор: djamshud 16.4.2010, 22:13
Детка, перед тем как будешь пытаться материться в следующий раз, спроси у мамы разрешения, и заодно она тебе объяснит, что завуалированный мат не делает культуру твоей речи выше. Это раз. Два, на каникулах научись писать код без постоянной надежды на отладчик, потому что по хорошему это настолько крайний случай, что вообще-то к его использованию почти не прибегают (а раз в год по обещанию можно чуток поправить код для отладчика). Отладчик - палочка-выручалочка несчастных кодеришек, неспособных уследить ход выполнения их собственной программы. Отучайся от дурной привычки.

Автор: smalcom 16.4.2010, 23:34
-Батяня!, - тут даже я прослезился

Автор: jhonyxakep 17.4.2010, 05:52
djamshud, 
smalcom, 
тут можно согласится только с обоимиsmile


Цитата(smalcom @  16.4.2010,  21:51 Найти цитируемый пост)
а еще домашнее задание: найти отладчик, который может ставить бряки на любую операцию в одной строке для исходника на Си


Несмотря на то что отладчик помогает в реально сложных ситуациях, он действительно нужен каждому, и уметь пользоватся им должен каждый программист, однако 

Цитата(djamshud @  16.4.2010,  22:13 Найти цитируемый пост)
Отладчик - палочка-выручалочка несчастных кодеришек, неспособных уследить ход выполнения их собственной программы. Отучайся от дурной привычки.


Это тоже правильное утверждение, тк действительно нормальный программист после пары неделек мучений, впредь будет писать код покрасивее и правильнееsmile 
В крайнем случае стандартный (может и старомодный) прикол программирования: логи, вывод на экран значений переменных, и тд, и тп, это практически все ключевые моменты узнать какое же из условий выполняется, сколько циклов прошло, и отладчик тут врядли поможет... smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)