在linux C+中生成输出文件+; 我使用Linux和C++,下面是整个程序中唯一的输出函数。 出于某种原因,输出文件“Network\u management\u output.txt” 不是生成的,在Windows中使用Visual Basic时,它可以完美地工作
我不明白为什么没有生成输出文件,因为我没有收到任何错误在linux C+中生成输出文件+; 我使用Linux和C++,下面是整个程序中唯一的输出函数。 出于某种原因,输出文件“Network\u management\u output.txt” 不是生成的,在Windows中使用Visual Basic时,它可以完美地工作,c++,linux,file-io,C++,Linux,File Io,我不明白为什么没有生成输出文件,因为我没有收到任何错误 void Data_list :: print_msg (Data_list* head) const { Data_list* start = head; FILE* fp=fopen("Network_Managment_Output.txt","w"); while(start!=NULL) { fprintf(fp, "%s\n",start->message);
void Data_list :: print_msg (Data_list* head) const
{
Data_list* start = head;
FILE* fp=fopen("Network_Managment_Output.txt","w");
while(start!=NULL)
{
fprintf(fp, "%s\n",start->message); //Printing messages to output file
start=start->Next;
}
fclose(fp);
}
如果我替换:fprintf(fp,“%s\n”,开始->消息)代码>
用cout替换此行:
FILE* fp=fopen("Network_Managment_Output.txt","w");
与
替换此行:
FILE* fp=fopen("Network_Managment_Output.txt","w");
与
问题似乎出在您的代码或编译(配置或任何)上,我根据您提供的代码提示编写了代码,它工作正常。请看一看
执行类似操作,包括这些库并保存文件(x).cpp
问题似乎出在您的代码或编译(配置或任何)上,我根据您提供的代码提示编写了代码,它工作正常。请看一看
执行类似操作,包括这些库并保存文件(x).cpp
没有错误,因为没有检查错误。消息的类型是什么?
?如果文件无法打开,我很惊讶它允许fprintf没有seg故障。您可以将fprintf设置为NULL作为无操作吗?好的,从技术上讲,它是UB,但我预计会出现seg-fault。请使用g++-Wall-g
编译,并学习如何使用调试器gdb
和内存泄漏检测器valgrind
,您也可以使用strace
和可执行文件快速找出open()发生了什么
--它将向您显示错误代码…您不会收到错误,因为您没有检查错误。消息的类型是什么?
?如果文件无法打开,我很惊讶它允许fprintf没有seg故障。您可以将fprintf设置为NULL作为无操作吗?好的,从技术上讲,它是UB,但我预计会出现seg-fault。请使用g++-Wall-g
编译,并学习如何使用调试器gdb
和内存泄漏检测器valgrind
,您也可以使用strace
和可执行文件快速找出open()发生了什么
--它将显示一个错误代码…谢谢。。我在这一行对程序做了一些更改:*FILE*fp=NULL;fp=fopen(“网络管理输出文件”,“w”);**现在apears在main.cpp中,文件被创建,但由于某种原因,输出函数现在没有输出**void Data\u list::print\u msg(Data\u list head,file*fp)//打印消息{Data\u list*start=head;while(start!=NULL){我看不到任何问题,如果你能发布你的代码…我的意思是你现在正在做的可能是我可以帮助你,因为我发给你的代码正在工作..复制此代码并创建一个新项目(或在单独的文件夹中创建test.cpp文件),编译/运行它,然后给我错误列表,(复制它们)从控制台。谢谢..我在程序的这一行做了一些更改:*FILE*fp=NULL;fp=fopen(“Network\u management\u Output.txt”,“w”);**现在在main.cpp中显示,并且创建了文件,但是由于某些原因,输出函数现在没有输出**void Data\u list::print\u msg(Data\u list head,FILE*fp)//打印消息{Data_list*start=head;while(start!=NULL){coutI我看不到任何问题,如果你能发布你的代码…我的意思是你现在正在做的可能是我可以帮助你,因为我发送给你的代码正在工作..复制此代码并创建一个新项目(或在单独的文件夹中创建test.cpp文件)并编译/运行它,然后从控制台向我提供错误列表(复制它们)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Data_list{
char message[250];
Data_list *Next;
};
void print_msg (Data_list* head){
Data_list* start = head;
FILE *fp = NULL;
fp = fopen("Network_Managment_Output.txt","w");
if (fp != NULL){
while(start!=NULL){
fprintf(fp, "%s\n",start->message); //Printing messages to output file
start=start->Next;
}
fclose(fp);
}
}
int main(){
Data_list* start = (struct Data_list *)malloc(sizeof(struct Data_list)) ;
strcpy(start->message,"test 1");
start->Next = (struct Data_list *)malloc(sizeof(struct Data_list)) ;
strcpy(start->Next->message,"test 2");
start->Next->Next = NULL;
print_msg(start);
return 0;
}
test 1
test 2