fopen () не работает в C - PullRequest
       4

fopen () не работает в C

2 голосов
/ 10 сентября 2011

Я исправил это.Спасибо за всю помощь.

Я просмотрел довольно много статей, сообщений на форуме и тем здесь;Тем не менее, никто не исправил мою проблему.Проблема в том, что мой fopen("file.txt", "w"); не создает файл.

Код:

//
//Includes
#include <stdio.h>

int main ()
{
    FILE *receipt = fopen("receipt.txt", "w");

    //Create file
    fprintf(receipt, "Price: %.2f$", purchase);
    fprintf(receipt, "\nDiscount: %.2f$", discount);
    fprintf(receipt, "\nTax %%: %.2f%%", tax_pct);
    fprintf(receipt, "\nTaxes: %.2f$", tax);
    fprintf(receipt, "\nTotal Price: %.2f$", end_price);
    fprintf(receipt, "\n\nEnd of Receipt.");
    fclose(receipt);

    return 0;
}

Я пытался добавить

if(!receipt) {
    printf("Error!");
}
else {
    fprintf(blabla);
}

Но нетпомог.

Он просто не создает файл: / Работает в Xcode и на Mac.Никаких предупреждений / уведомлений или чего-то другого, чтобы дать мне представление о том, что не так.

* Я попытался добавить system("pwd"), чтобы выяснить, не сохранило ли оно то, куда следует его сохранить, но у меня естьтрудно найти этот каталог (я не знаю, является ли он временным, но все же файл должен быть там?).Очевидно, я не ставил под сомнение фактическую действительность библиотеки, да, неявно, что это был fopen, который я использовал, не давая мне то, что я ожидал?

Я не могу заставить perror дать мне любую полезную информацию,Казалось бы, все работает как надо;Я просто не получаю файл.Пожалуйста, избегайте более умных комментариев, если вы не хотите помогать, просто не пишите. *

Кроме того, я удалил весь код, кроме фактических fopen() и fprintf().

Ответы [ 4 ]

8 голосов
/ 10 сентября 2011

Единственное объяснение, которое имеет смысл, это то, что у вас нет прав для создания файла в рабочем каталоге, или рабочий каталог не там, где вы ищете файл, который будет создан.

fopen() не работает

Ну, конечно, это работает.Вы не должны думать, что стандартная библиотека не работает.

Никаких предупреждений / уведомлений или чего-то другого, чтобы дать мне представление о том, что не так.1013 * Вы не проверили ошибки после вызова fopen().Если вы не проверяете наличие ошибок, как вы ожидаете, что они будут доставлены вам?

7 голосов
/ 10 сентября 2011

Попробуйте perror.Возможно, у вас нет прав или что-то в этом роде.

FILE *receipt = fopen("receipt.txt", "w");
if (!receipt)
    perror("fopen");
2 голосов
/ 10 сентября 2011

Файл создан, но не там, где вы ожидаете.

Проверьте рабочий каталог (getcwd).

1 голос
/ 10 сентября 2011

Вы должны использовать strerror для самостоятельного форматирования ошибки или perror для печати системной ошибки, совпадающей с ошибкой.

man errno может помочь вам

...