如何在C中读取和编辑.text文件?

时间:2012-03-14 19:10:57

标签: c file-io read-write

我正在为自动取款机编写程序。我的.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 个答案:

答案 0 :(得分:1)

您需要在此处执行以下步骤:

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()设置不同的格式,以便在阅读普通文本编辑器时看起来更好。

答案 1 :(得分:0)

您应该使用文件指针打开&读取文件,根据您的意愿修改内容并写回文件。

例如:

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

答案 2 :(得分:0)

您可以在C i中使用基本FILE I / O(输入/输出)功能来帮助读取和编辑文件,例如,如果文件存在则写入文件并且不创建文件用一个名字,然后写信给它。

可以在以下网址找到基础教程 http://www.tutorialspoint.com/cprogramming/c_file_io.htm

现在,如果您正在讨论复杂的.txt文件,其中包含大量内容,然后您需要找到一个特定的单词并进行更改,我发现在Linux中您可以调用脚本有点困难读取文件,使用SED进行编辑,(用于过滤和转换文本的流编辑器)。您可以在以下链接中找到它的教程 http://www.panix.com/~elflord/unix/sed.html