1

昨天我发布了一份关于必须使用 C++ 编写的新帐户程序的大合同。我的问题结束了,但我认为因为它有很多错误。通过当地 C++ 专家的大量工作和咨询,我修复了我们拥有的原始代码:

#include <accounting.h>
#include <stdio.h>

char *main()
{
    accounting bank = 100debits;
    bank = bank + 200debits;
    return printf("bal: %accounting\n", bank);
}

我们定义的一些类的新版本运行良好,但唯一的问题是 C++ 无法将新行写入文件。下面的代码按原样工作,但如果我放回注释行,我没有输出到文件。

#include <stdlib.h> 
#include <stdio.h>
#include <cstring>
#define accounting float
#define print_accounting(x)  x "%0.2f"
#define debits * 1.0F
#define credits * -1.0F

int main()
{
    accounting bank = 100 debits;
    bank = bank + 200 debits;
    char my_bal[((unsigned short)-1)];
    sprintf(my_bal, print_accounting("bal:"), bank);
    char write_file[((unsigned short)-1)];
    write_file[NULL] = 0;
    strcat(write_file, "@echo ");
    strcat(write_file, my_bal);
//  strcat(write_file, "\n");  -- Wont work --
    strcat(write_file, " > c:\\SAP_replace\\bal.txt");
    system(write_file);
    return 0;
}
4

1 回答 1

4

echo将自动在文件末尾写入换行符。

如果你想要两个换行符,只需添加另一行类似于:

system ("echo. >>c:\SAP_replace\\bal.txt");

当前system()通话后。

或者,您可以抛弃生成另一个进程来执行输出的整个过时想法,而是使用iostreams来完成这项工作。这就是你应该在 C++ 中这样做的方式,例如:

#include <iostream>
#include <fstream>
int main (void) {
    float fval = 0.123f;
    std::ofstream os ("bal.txt");
    os << "bal: " << fval << '\n';
    os.close();
    return 0;
}

输出:

bal: 0.123
于 2012-12-14T08:26:43.403 回答