Как мне прочитать и отредактировать TXT-файл в C? - PullRequest
0 голосов
/ 14 марта 2012

Я пишу программу для банкомата.Мой .txt файл представляет собой сумму баланса счета (в данном случае 1500,00).Как мне прочитать в файле .txt, отредактировать баланс счета, а затем сохранить его в файл?

Например, если бы я попросил пользователя ввести депозит на сумму 300,00, яхочу иметь возможность добавить эти 300,00 к существующим 1500,00 в файле, а затем перезаписать 1500,00 с общей суммой 1800,00.

Это то, что я до сих пор.

    float deposit;
    float var;

printf("Current account balance:");
if ( (file_account = fopen ("account.txt", "r")) == NULL)
{
    printf ("Error finding account balance.\n");
    return;
}

while ( (fscanf (file_account, "%c", &var)) != EOF)
{
    printf ("%c", var);
}
printf ("\n");
fclose (file_account);

for (deposit=0; deposit>0; deposit++)
{
    if (deposit > 0)
    {
        printf ("Enter amount to deposit:");
        scanf ("%f", &deposit);
        //file_account + deposit;
        fprintf (file_account, "Your new account balance is: %f", deposit);
    }
    else
    {
        printf ("Amount must be 0 or more.");
    }
    fclose (file_account);

}

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Здесь нужно сделать несколько шагов:

int triedCreating = 0;

OPEN:
FILE *filePtr = fopen("test.txt", "r+");

if (!filePtr)
{
    // try to create the file
    if (!triedCreating)
    {
        triedCreating = 1;
        fclose(fopen("test.txt", "w"));
        goto OPEN;
    }
    fprintf(stderr, "Error opening file %i. Message: %s", errno, strerror(errno));
    exit(EXIT_FAILURE);
}

// scan for the float
float value = 0.0f;
fscanf(filePtr, "%f", &value);

printf("current value: %f\nvalue to add: ", value);

// add the new value
float add = 0.0f;
scanf("%f", &add);

value += add;

// write the new value
fseek(filePtr, 0, SEEK_SET);

fprintf(filePtr, "%f", value);

fclose(filePtr);

Возможно, вы захотите иметь другое форматирование для printf(), чтобы оно выглядело лучше при чтении в обычном текстовом редакторе.

0 голосов
/ 07 мая 2013

вы можете читать и редактировать файл с помощью базовой функции FILE I / O (Ввод / вывод) в C i простым способом, например, записывать в файл, если он существует, и если файл не создается. с именем, а затем напишите ему.

Основное руководство можно найти по адресу http://www.tutorialspoint.com/cprogramming/c_file_io.htm

Теперь, если вы говорите о сложном файле .txt, содержащем много контента, а затем вам нужно найти определенное слово и изменить его, я считаю, что это немного сложно, довольно возможно в Linux, где вы можете вызвать скрипт чтобы прочитать файл, отредактируйте его, используя SED (потоковый редактор для фильтрации и преобразования текста). Вы можете найти учебные пособия для него по ссылкам ниже http://www.panix.com/~elflord/unix/sed.html

0 голосов
/ 14 марта 2012

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

Например:

File *fp; // creates a pointer to a file
fp = fopen(filename,"r+"); //opens file with read-write permissions
if(fp!=NULL) {
    fscanf(fp,"%d",&var);      //read contents of file
}

fprintf(fp,"%d",var);         //write contents to file
fclose(fp);                   //close the file after you are done
...