首页 > 解决方案 > C程序逐行读取文本,每行算术运算

问题描述

我正在尝试制作一个程序,该程序将从文本文件中读取算术运算作为参数,并将每行的结果输出到另一个文本文件。

我的输入文本文件看起来像这样

    2+2
    3*4
    5-5
    8/2

这是我现在拥有的代码。

    int main (int argc, char **argv) {
       char const* const fileName = argv[1];
        FILE* file = fopen(fileName, "r");
        int bufferLength = 256;
        char buffer[bufferLength];
    
    while(fgets(buffer, bufferLength, file)) {
        printf("%s\n", buffer);
    }
    
    fclose(file);
        return 0;
    }

我的文本文件中的任何一行都NUMBERarithmeticNUMBER采用类似的格式,如果我愿意的话:

int sum
sum = number1 + number2; // or any other operation

所以我想在 printf 中读取每一行作为 int 变量并将其输出到另一个文本文件。对我来说问题是 printf - %d 总是输出随机数而不是计算操作。

我只注意到 bufferLength 会影响随机性。它也可以与 fileName 连接。如何正常计算算术运算?

标签: cmathtextlineoperation

解决方案


看一下sscanf()orfscanf()一种将每一行解析为操作数和运算符的变量的方法,例如sscanf(buffer, "%d %c %d", &left, &op, &right). 然后执行计算就很简单了。

if (op == '+') result = left + right;
else if (op == '-') result = left - right;
// etc.

或者,如果您更喜欢 if/else 阶梯,请使用 switch 语句。


推荐阅读