C: запись в файл

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

C: запись в файл

Сообщение IMB »

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

Код: Выделить всё

#define SEQ            "/tmp/msp_seq"
int seq;
if ((fd = open(SEQ, O_WRONLY)) < 0) {
  if (errno == ENOENT) {
    if ((fd = creat(SEQ, S_IRUSR | S_IWUSR)) < 0) {
    printf("Can't create file: %s\n", SEQ);
    exit(-1);
    } else {
    printf("Created file: %s\n", SEQ);
    write(fd, seq, 32);
    printf("Starting seq = %#x\n", seq);
    }
  } else {
    printf("Can't open file: %s\n", SEQ);
    exit(-1);
  }
} else {
  write(fd, seq, 32);
  printf("Starting seq = %#x\n", seq);
}
close(fd);

Файл успешно создаётся, но запись в него не идёт.
В чём я ошибся?
Спасибо.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: C: запись в файл

Сообщение watashiwa_daredeska »

open(SEQ, O_CREAT | O_WRONLY | O_TRUNC) — и не надо никакого creat в обработчике ошибок.

write(fd, &seq, sizeof(seq))
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: C: запись в файл

Сообщение drBatty »

IMB писал(а):
23.10.2009 12:34
Файл успешно создаётся, но запись в него не идёт.
В чём я ошибся?

почему вы не хотите воспользоваться fopen & fwrite? ИМХО они более удобные.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: C: запись в файл

Сообщение watashiwa_daredeska »

drBatty писал(а):
25.10.2009 08:20
воспользоваться fopen & fwrite? ИМХО они более удобные.
Чем, если не секрет? По моему, те же яйца в профиль.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: C: запись в файл

Сообщение drBatty »

watashiwa_darede... писал(а):
25.10.2009 09:28
воспользоваться fopen & fwrite? ИМХО они более удобные.

Чем, если не секрет? По моему, те же яйца в профиль.

ну не знаю. просто думаю что топикстартер не допустил-бы таких ошибок, если воспользовался-бы fopen().
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: C: запись в файл

Сообщение watashiwa_daredeska »

drBatty писал(а):
25.10.2009 09:44
думаю что топикстартер не допустил-бы таких ошибок, если воспользовался-бы fopen()
Просто, топикстартер не дочитал документацию по флагам open(). От нечтения документации ничего не помогает, кроме чтения :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: C: запись в файл

Сообщение drBatty »

watashiwa_darede... писал(а):
25.10.2009 09:57
Просто, топикстартер не дочитал документацию по флагам open(). От нечтения документации ничего не помогает, кроме чтения smile.gif

полностью поддерживаю!
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: