Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linux C+中生成输出文件+; 我使用Linux和C++,下面是整个程序中唯一的输出函数。 出于某种原因,输出文件“Network\u management\u output.txt” 不是生成的,在Windows中使用Visual Basic时,它可以完美地工作_C++_Linux_File Io - Fatal编程技术网

在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