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