0

我使用的是 Linux 和 C++,下面是整个程序中唯一的输出函数。由于某种原因,没有生成输出文件“Network_Managment_Output.txt”,在 Windows 中使用 Visual Basic 时它可以完美运行!

我无法弄清楚为什么没有生成输出文件我没有收到任何错误。

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",start->message);
cout<<start->message<<endl;

它完美地将数据打印到屏幕上。

有什么建议吗???

4

2 回答 2

3

替换这一行:

FILE* fp=fopen("Network_Managment_Output.txt","w");

FILE* fp=fopen("Network_Managment_Output.txt","w");
if(!fp) perror("Network_Management_Output.txt");
于 2012-12-04T15:45:14.847 回答
0

似乎问题在于您的代码或编译(配置或任何),我根据您提供的代码提示制作了代码,它工作正常看看

做类似的事情,包括这些库并保存文件 (x).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
于 2012-12-04T16:12:14.733 回答