c - fscanf 命令无法识别空格
问题描述
我正在尝试编写一个程序来编辑包含用户在代码块上的费用的文本文件。
第一阶段:有一个文件名“abc.txt”。它说明当前金额和每个日期的支出。使用循环,我将“abc.txt”复制到另一个文件“test.txt”。
第二阶段:在另一个循环中,我要求用户添加一个新日期和新金额,这些新日期和金额将被减去或添加到总金额中。
第三阶段:我关闭这两个文件并使用另一个循环将“test.txt”文件(包含所有更新的信息)复制到原始的 abc.txt“文件中。
问题在最后阶段;复制文本时,不会保留空格。
如果你想使用我的代码,你应该有 2 个文本文件名为“abc.txt”和“test.txt”。将“test”文件留空,并在“abc”文件中写下:
[0] Total amount: 79179 [1]
[1]
[1]
[1]
[0] Date: 1.1.19 [1]
[0] Sub: 10000 70000 [1]
[1]
[0] Date: 2.1.19 [1]
[0] Add: 10000 80000 [1]
[1]
[0] Date: 3.1.19 [1]
[0] Sub: 499 79501 [1]
[1]
[0] Date: 4.1.19 [1]
[0] Sub: 322 79179 [1]
[1]
然后运行这段代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE * filepointer;
filepointer=fopen("abc.txt","r");
char name[100];
char name1[1000];
int num;
int old_amount;
char date[20];
int flag=0;
int amount;
char action[10];
int tit;
FILE *test;
test=fopen("test.txt","w");
fscanf(filepointer,"%s %s %s %d", &name, &name, &name, &amount );
printf("The total amount: %d\n",amount);
while(!feof(filepointer))
{
fscanf(filepointer,"%s",name );
if(strcmp(name,"[1]")==0)
{
printf("\n");
fprintf(test,"[1]\n");
fscanf(filepointer,"%s ",name );
}
printf("%s ",name);
fprintf(test,name);
fprintf(test," ");
}
printf("Enter date: ");
scanf("%s",&date);
printf("date: %s\n ",date);
fprintf(test,"\n[0] Date: ");
fprintf(test,date);
fprintf(test," [1]\n");
while(flag==0)
{
fflush(stdin);
printf("What is th amount: ");
scanf("%d",&num);
printf("[0] %d\nstate action [S] [A]: ",num);
scanf("%s",&action);
if(strcmp(action,"a")==0 || strcmp(action,"A")==0)
{
fprintf(test,"\n[0] Add: %d ",num);
amount=amount+num;
fprintf(test,"%d [1]\n",amount);
printf("OK");
}
if(strcmp(action,"s")==0 || strcmp(action,"S")==0)
{
fprintf(test,"\n[0] Sub: %d ",num);
amount=amount-num;
fprintf(test,"%d [1]\n",amount);
printf("OK");
}
printf("\nDo you wish to add another value?[Y] [N]\n");
scanf("%s",&action);
if(strcmp(action,"n")==0 || strcmp(action,"N")==0)
{
flag=1;
}
}
fclose(test);
fclose(filepointer);
FILE * text;
text=fopen("test.txt","r");
FILE *abc;
abc=fopen("abc.txt","w");
fprintf(abc,"\n[0] Total amount: %d [1]\n",amount);
while(!feof(text))
{
fscanf(text,"%s",&name1 );
if(strcmp(name1,"[1]")==0)
{
//printf(" GOT IT \n");
fprintf(abc,"[1]\n");
fscanf(text,"%s ",&name1 );
}
printf("%s ",name1);
fprintf(abc,"%s ",name1);
fprintf(abc," ");
}
return 0;
}
当我在项目文件中运行它时,它工作正常,但是当我作为应用程序运行时,它会导致麻烦......有什么想法吗?
解决方案
推荐阅读
- jsxgraph - 如何写圆依赖 val a (jsxgraph)
- json - 如何在没有键的情况下遍历 JSON 对象?
- arduino - ESP8266 和 https 连接到 firebase
- php - Laravel - 如何获得 2 列的行?
- kubernetes - 是否有获取 HostNode CIDR(不是 podCIDR)kubectl 或其他命令的命令?
- hl7-fhir - FHIR.NET API 中的 Matches() 和 IsExactly() 有什么区别
- java - 如何使在列表上使用 for 循环的 sum 方法正常工作?
- javascript - 根据条件从数组中删除对象数组
- python - 如何修复我的分类器的类精度
- python - 同时抓取两个页面:pandas 错误