这段代码有什么问题,特别是与文件?
问题描述:
执行从 标准输入中读取数学表达式的算法,并且如果表达式 正确括号,则写入标准输出。这段代码有什么问题,特别是与文件?
我做了代码,但我不知道我是否可以使用该文件。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
FILE *citire, *scriere;
char expr[100];
int fe=0,i;
citire = fopen("in.txt", "rb");
scriere = fopen("out.txt", "wb");
fscanf(citire, "%s", &expr);
//input
i = 0;
while (expr[i] != '\0')
{
if (expr[i] == '(')
{
fe++;
}
else if (expr[i] == ')')
{
fe--;
if (fe < 0)
break;
}
i++;
}
//output
if (fe == 0)
{
fprintf(scriere, "DA\n");
}
else
{
fprintf(scriere, "NU\n");
}
fclose(citire);
fclose(scriere);
return 0;
}
答
来读取标准器输入/写/输出本
citire = stdin;
scriere = stdout;
替换此
citire = fopen("in.txt", "rb");
scriere = fopen("out.txt", "wb");
,并在这两个电话下降到fclose()
。
然后调用这样的程序
./a.out <in.txt >out.txt
或者,也可以在所有掉落FILE*
变量和使用一般f*()
功能切换到使用标准I/O相关的版本:
-
fscanf()
- >scanf()
-
fprinf()
- >printf()
+0
非常感谢 –
它工作与否? –
需求提到“标准输入”(键盘)和标准输出(屏幕),所以不需要在这里使用文件。文件的使用看起来不错,除了缺少错误检查, –
**不工作** –