Страница 1 из 1

Как создать файл? Глупо, но все же

Добавлено: 11 янв 2003, 02:43
eof
В общем, в следующем фрагменте прога категорически отказывается работать:
if ((db = fopen ("~/.dbword", "a+b")) == NULL) {
fprintf (stderr, "Cannot create datdbase");
exit (EXIT_FAILURE);
}

В любом случае пишет, что не хочет создавать файл, и все тут.
Может, я вообще неправильно пытаюсь создать файл? (Хотя, в доке написано, что "a+b" открывает, а если не существует, то создает файл с указанным именем для дополнения.)

Добавлено: 11 янв 2003, 16:02
Anonymous
tren@host[14:58:42]:/tmp 1179$ ls -l /tmp/testdb
ls: /tmp/testdb: No such file or directory
zsh: exit 1 ls --color -l /tmp/testdb
tren@host[14:59:43]:/tmp 1180$ cat /tmp/test.c
#include <stdio.h>
int main() {
FILE *db;
if ((db = fopen ("/tmp/testdb", "a+b")) == NULL) {
fprintf (stderr, "Cannot create datdbase");
exit (-1);
}
}
tren@host[14:59:51]:/tmp 1181$ cc -o /tmp/test /tmp/test.c
tren@host[15:00:10]:/tmp 1182$ /tmp/test
zsh: exit 176 /tmp/test
tren@host[15:00:18]:/tmp 1183$ ls -l /tmp/testdb
-rw-r--r-- 1 tren users 0 2003-01-11 15:00 /tmp/testdb
tren@host15:00:26]:/tmp 1184$

Re: Как создать файл? Глупо, но все же

Добавлено: 11 янв 2003, 20:00
Llama
eof писал(а):В общем, в следующем фрагменте прога категорически отказывается работать:
А ей можно писать, туда, куда ты хочешь? Попробуй под рутом пустить...

Добавлено: 27 мар 2004, 20:10
Гость
eof
"~/.dbwork - это shell тебе раскрывает ~ в имя home-каталога пользователя, glibc такого за тебя не сделает. Сделай что-либо вроде такого:

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

char *file_name;

  asprintf(&file_name,"%s/.dbwork",getenv("HOME"));
  ..... ну а дальше уже open()