Я пытаюсь создать файл внутри каталога, а затем добавить случайный текст внутрь файла.

Мой код

char dirname[30]; 
sprintf(dirname, "myroom.%d", (int)getpid()); 
mkdir(dirname,0777); 

char path[path_max+1];
snprintf(path1, PATH_MAX+1, "%s/file1.txt,dirname); 
FILE *filedir1 = fopen(path1, "a+"); 
fclose(filedir1); 

char *random_name = { "burger", "toast", "burrito", "noodles" };
int number = rand();
fputs(random_name[number], filedir1];

Чего я хочу

( Внутренний каталог "dirname" )

Когда я открываю file1.txt, я ожидаю, что в первой строке будет слово буррито, бургер, тост или лапша.

Что я получаю

File1.txt по-прежнему пуст.

Вопросы

Кто-нибудь знает, что случилось с моим кодом? Я видел из видео на YouTube, чтобы добавить текст в файл, все, что мне нужно, это команда fputs, но, похоже, она не работает в моем коде. Это потому, что я использую "a +" в fopen?

Любая помощь будет высоко оценена. Благодарность

-1
coava 27 Окт 2015 в 06:00

2 ответа

Лучший ответ

Я думаю, что rand () создает проблему. Вместо этого используйте rand ()% 4. И вы закрываете файл с помощью fclose () перед вводом случайного слова. Используйте его наконец.

3
Sourav Datta 27 Окт 2015 в 03:05

После открытия файла вы закрываете этот файл. После закрытия файла вы не сможете ввести текст в этот файл.

FILE *filedir1 = fopen(path1, "a+"); 
fclose(filedir1); 

Ваша проблема в этой строке fclose. Вы должны сделать это после завершения операции записи в этот файл.

Итак, удалите fclose (filedir1) и поместите эту строку после записи файла.

3
user5076313user5076313 27 Окт 2015 в 03:28