我正在使用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;
它完美地将数据打印到屏幕上。
任何建议????
答案 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