这个代码有什么问题,特别是文件?

时间:2017-05-07 13:30:38

标签: c file stdio

  

实现一个从中读取数学表达式的算法   标准输入,如果表达式为,则写入标准输出   正确括号。

我制作了代码,但我不知道我是否可以使用该文件。

#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;
}

1 个答案:

答案 0 :(得分:0)

要从标准输入/输出读取/写入,请替换此

citire = fopen("in.txt", "rb");
scriere = fopen("out.txt", "wb");

由此

citire = stdin;
scriere = stdout;

并将两次调用放到fclose()

然后像这样调用程序

./a.out <in.txt >out.txt

或者您可以完全删除FILE*个变量并从使用常规f*()函数切换到使用标准I / O相关版本:

  • fscanf() - &gt; scanf()
  • fprinf() - &gt; printf()