在linux C ++中生成输出文件

时间:2012-12-04 15:40:51

标签: c++ linux file-io

我正在使用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;

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

任何建议????

2 个答案:

答案 0 :(得分:3)

替换此行:

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

FILE* fp=fopen("Network_Managment_Output.txt","w");
if(!fp) perror("Network_Management_Output.txt");

答案 1 :(得分: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