構造体をファイルに書き込んでいますが、ガベージが返されます。これが私のコードです:
ptFile = fopen("funcionarios.dat", "ab+");
fwrite(&novoFunc, sizeof(strFunc), 1, ptFile);
fwrite の前後の struct novoFunc の値はガベージではありません。ただし、ファイルの値を返すと:
ptFile = fopen("funcionarios.dat", "rb+");
[...]
fseek(ptFile, i*sizeof(strFunc), SEEK_SET); //on the loop, i goes from 0 to total structs
fread(&funcionario, sizeof(strFunc), 1, ptFile);
printf("Code: %d; Name: %s; Address: %s; CPF: %d; Sales: %d\n", funcionario.codigo, funcionario.nome, funcionario.endereco, funcionario.cpf, funcionario.numVendas);
理由はありますか?コードは正常に機能していましたが、大幅な変更を行ったことを覚えていません。
前もって感謝します
編集:構造体定義
typedef struct func{
int codigo;
char nome[50];
char endereco[100];
int cpf;
int numVendas;
int ativo;
} strFunc;
Edit2: 奇妙になりました: Linux (netbeans と gcc コンパイラを使用) では正常に動作しますが、Windows (devcpp と codeblocks) では動作しません。さて、コード全体は次のとおりです。
関数 cadastraFucionario() はユーザーを登録し、listaFuncionarios() を使用してすべての登録済みデータを一覧表示すると、ガベージが返されます。これは listaFuncionarios() が返すもののプリントです:
http://img715.imageshack.us/img715/3002/asodfadhf.jpg
申し訳ありませんが、コードは英語ではありません