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 に答える