如何使用 fprintf 打印头文件中定义的结构成员值?
How do I use fprintf to print a struct member values that's defined in a header file?
我目前正在学习一门关于"结构化编程方法"的课程。这门课程不是基于语言的,但我们通常使用C或C++。有时我需要用其中一种语言编写,有时我必须首先用C编写并将代码转换为C++,有时我可以用我喜欢的语言编写。可能很奇怪,我更喜欢使用C的(f/p)printf。所以,我的问题是:
这是我的struct
:头文件
#include <string>
using namespace std;
typedef string FNAME;
typedef string LNAME;
typedef string FULLNAME;
typedef struct EmpRecord
{
FNAME firstname;
LNAME lastname;
FULLNAME fullname;
float hours, rate, deferred, gross, netpay,
fedtax, statetax, ssitax;
} EmpRecord;
这是"主要".cpp:
#define STRADD ", "
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include "Struct.h"
#include "Rates.h"
#include "calcTaxesPlus.cpp"
using namespace std;
/*......*/
void printEmpData(FILE *fp, struct EmpRecord *, float reghrs, float othrs);//3.8
/*......*/
int main()
{
float totRegHrs, totOtHrs, totRates, totGross, totDeferd,
totFed, totState, totSSI, totNet;
float reghrs, othrs;
float avgRate, avgRegHrs, avgGross, avgFed, avgSSI, avgNet,
avgOtHrs, avgState, avgDeferd;
int numEmp;
EmpRecord emp;
EmpRecord *Eptr;
Eptr = &emp;
FILE * fp;
fp = fopen("3AReport.txt", "w");
if (fopen == NULL)
{
printf("Couldn't open output file...!");
fflush(stdin);
getchar();
exit(-1000);
}
/*....*/
printEmpData(fp, Eptr, reghrs, othrs);//3.8
return 0;
}
/*....*/
void printEmpData(FILE *fp, struct EmpRecord *e, float reghrs, float othrs)
{
fprintf(fp, "n%-17.16s %5.2f %5.2f %7.2f %6.2f %6.2f %7.2f", e->fullname, e->rate, reghrs, e->gross, e->fedtax, e->ssitax, e->netpay);
fprintf(fp, "n %5.2f %6.2f %6.2f n", othrs, e->statetax, e->deferred);
return;
}
我试过很多其他问题/答案建议的组合,但似乎没有一个能处理跨语言的情况。
我基本上是在寻找一个解决方案,允许我继续使用fprintf,同时留下大部分代码C++。
我不是在找人为我编写解决方案的代码,而是在解释这个问题是什么,以及如何从逻辑上绕过它们。
此外,typedef也是一项要求。谢谢-
std::string
有一个c_str() const
方法,可以用来"准备"std::string
以使用%s
:进行格式化
fprintf(fp, "%s", e->fullname.c_str());
当printf风格的函数在格式字符串中看到%s
时,它正在寻找一个以NUL结尾的C字符串(类型:const char *
)。std::string::c_str() const
方法只返回std::string
对象的值。
相关文章:
- 具有结构成员char数组的sscanf
- 仅使用结构名称访问结构成员
- 使用 structType*& 赋给结构成员
- 使用结构成员指针在C++中填充结构
- 聚合初始化,将成员指针设置为同一结构成员
- 为什么结构化绑定不使用"auto&"返回对结构成员的引用,而是返回成员本身
- 是否可以将结构数组别名为结构成员数组?
- 结构成员在访问时被清除
- 如何指示结构成员没有锯齿?
- 为什么继承的结构成员在联合中无法访问?
- 尝试在 qml 中访问结构成员的 QList
- C++/CLI -- 访问结构成员
- 调用在类中声明的结构成员
- 对结构成员的临时绑定引用
- 无法使用 strcpy 将字符串复制到静态结构成员
- 为什么类成员数据必须是静态的才能被模板化类的模板化结构成员访问
- 填充模板化结构类型的结构成员
- C/C++intellisense 0.26.1不显示结构成员列表
- 在源文件中创建具有结构成员的结构
- 如何访问结构成员作为指针