C++ 为什么我的代码中的fprintf()函数不';工作不正常吗?
第一个fprintf()可以正常工作,但第二个输出完全是胡说八道C++ 为什么我的代码中的fprintf()函数不';工作不正常吗?,c++,printf,C++,Printf,第一个fprintf()可以正常工作,但第二个输出完全是胡说八道 #包括 int main() { 文件*f; fopen_s&f,“text.txt”,“w”); std::string name=“hello”; int面积=123; char ch='i'; fprintf(f,“abc”);//好的 fprintf(f,“|%-12s |%-5c |%-9d |”,name.c|u str(),area,ch);//不正常 } 格式说明符%s需要以空结尾的字符数组,而不是std::st
#包括
int main()
{
文件*f;
fopen_s&f,“text.txt”,“w”);
std::string name=“hello”;
int面积=123;
char ch='i';
fprintf(f,“abc”);//好的
fprintf(f,“|%-12s |%-5c |%-9d |”,name.c|u str(),area,ch);//不正常
}
格式说明符%s
需要以空结尾的字符数组,而不是std::string
。因此,fprintf
的行为是未定义的
使用:
fprintf(f,“|%-12s |%-5c |%-9d |”,name.c|u str(),area,ch)代码>
函数返回以null结尾的数组
此外,其他类型的格式字符串似乎也不正确。要打印int
,格式说明符是%d
,而不是%c
,为字符指定的格式是%c
,而不是%d
因此,fprintf
的最终调用应该是:
fprintf(f,“|%-12s |%-5d |%-9c |”,name.c|u str(),area,ch)
格式说明符%s
需要一个以null结尾的数组char
,而不是std::string
。因此,fprintf
的行为是未定义的
使用:
fprintf(f,“|%-12s |%-5c |%-9d |”,name.c|u str(),area,ch)代码>
函数返回以null结尾的数组
此外,其他类型的格式字符串似乎也不正确。要打印int
,格式说明符是%d
,而不是%c
,为字符指定的格式是%c
,而不是%d
因此,fprintf
的最终调用应该是:
fprintf(f,“|%-12s |%-5d |%-9c |”,name.c|u str(),area,ch)代码>除非绝对必要,否则请勿将信息作为图像共享。请参阅:,。除非绝对必要,否则请勿以图像形式共享信息。见:。
#include <string>
int main()
{
FILE* f;
fopen_s(&f, "text.txt", "w");
std::string name = "hello";
int area = 123;
char ch = 'i';
fprintf(f, "abc"); // OK
fprintf(f, "|%-12s |%-5c |%-9d |", name.c_str(), area, ch); // not OK
}