2017-05-07 30 views
-4

执行从 标准输入中读取数学表达式的算法,并且如果表达式 正确括号,则写入标准输出。这段代码有什么问题,特别是与文件?

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

#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

**不工作** –

回答

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

非常感谢 –