В общем, в следующем фрагменте прога категорически отказывается работать:
if ((db = fopen ("~/.dbword", "a+b")) == NULL) {
fprintf (stderr, "Cannot create datdbase");
exit (EXIT_FAILURE);
}
В любом случае пишет, что не хочет создавать файл, и все тут.
Может, я вообще неправильно пытаюсь создать файл? (Хотя, в доке написано, что "a+b" открывает, а если не существует, то создает файл с указанным именем для дополнения.)
Как создать файл? Глупо, но все же
- eof
- Маньяк
- Сообщения: 180
- Зарегистрирован: 05 июл 2002, 12:22
- Откуда: minsk.by
- Контактная информация:
Как создать файл? Глупо, но все же
I hope, bug is not in my head...
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$
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: Как создать файл? Глупо, но все же
А ей можно писать, туда, куда ты хочешь? Попробуй под рутом пустить...eof писал(а):В общем, в следующем фрагменте прога категорически отказывается работать:
eof
"~/.dbwork - это shell тебе раскрывает ~ в имя home-каталога пользователя, glibc такого за тебя не сделает. Сделай что-либо вроде такого:
"~/.dbwork - это shell тебе раскрывает ~ в имя home-каталога пользователя, glibc такого за тебя не сделает. Сделай что-либо вроде такого:
Код: Выделить всё
char *file_name;
asprintf(&file_name,"%s/.dbwork",getenv("HOME"));
..... ну а дальше уже open()