我想我又遇到了那些指针问题。我创建了一个简单的函数,将 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()
函数可以正确工作——文本保存在文件中。然而,当我从中调用该Output()
函数时,OutPutSomething()
它并没有将文本正确地保存到文件中(它只保存了一个 '\B0' 文本)。我看到printf()
控制台中显示的文本,但文本未保存。
可能是什么原因?谢谢!
更多: 我使用 Code::Blocks (GCC 编译器),应用程序是控制台应用程序。没有链接库,没有添加其他标题。看到如此简单的事情不起作用,令人沮丧。