无法在 Linux 上使用 C++ 保存文本文件
Posted
技术标签:
【中文标题】无法在 Linux 上使用 C++ 保存文本文件【英文标题】:Can't save text file with C++ on Linux 【发布时间】:2012-09-06 20:05:17 【问题描述】:我想我又遇到了那些指针问题。我创建了一个简单的函数,将 char 数组保存到指定的文件中。 这是我的全部代码:
#include <stdio.h>
#include <string.h>
void Output(const char*, const char*, const char*);
void OutPutSomething();
// main.cpp --------------------------------------------------
int main(int argc, char** argv)
char Message[256];
snprintf(Message, 256, "This message will be saved\n");
Output("Output.txt", Message, "w");
return 0;
void OutPutSomething()
Output("Output.txt", "This text will not be saved (???)\n", "w");
void Output(const char *FileName, const char *Text, const char *Mode)
FILE *OutputFIle;
OutputFIle = fopen(FileName, Mode);
if (OutputFIle != NULL)
printf(Text, "\n");
fputs(Text, OutputFIle);
fclose(OutputFIle);
else
printf("Output function failed!");
所以,我的问题是这样的:当从主函数调用 Output()
函数时,函数可以正常工作 - 文本保存在文件中。然而,当我从OutPutSomething()
调用Output()
函数时,它不会正确地将文本保存到文件中(它只保存一个'\B0' 文本)。我看到printf()
在控制台中显示的文本,但文本没有保存。
可能是什么原因?谢谢!
更多: 我使用 Code::Blocks(GCC 编译器)并且该应用程序是一个控制台应用程序。没有链接库,没有添加其他标题。看到如此简单的事情不起作用,令人沮丧。
【问题讨论】:
你通常不应该在你的头文件中定义你的函数。标头通常仅声明函数签名,并且定义应位于.cpp
文件中的其他位置,该文件可以独立编译然后链接到最终二进制文件中。
这是完整的代码吗? #include 您的代码在我的系统上运行良好。我同意其他人的观点,尽管您不应该将函数实现放在头文件中。
【讨论】:
也适用于我的系统。一定有其他问题,不是这里显示的代码的一部分。以上是关于无法在 Linux 上使用 C++ 保存文本文件的主要内容,如果未能解决你的问题,请参考以下文章