我正在寫一個結構到文件中,但它返回垃圾。這裏是我的代碼:文件返回垃圾,但正確寫入
ptFile = fopen("funcionarios.dat", "ab+");
fwrite(&novoFunc, sizeof(strFunc), 1, ptFile);
結構novoFunc,在fwrite之前和之後的值不是垃圾。 然而,當我返回文件值:
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和代碼塊)。好了,整個代碼是在這裏:
功能cadastraFucionario()註冊用戶,當我使用listaFuncionarios(),列出所有登記的數據,則返回垃圾。這裏是什麼listaFuncionarios()返回打印:
http://img715.imageshack.us/img715/3002/asodfadhf.jpg
對不起英語
您應該檢查'fread()'的返回值,看看讀取是否成功。讀取失敗對於看到垃圾很容易。 – FatalError
類型爲'strFunc'的'novoFunc'和'funcionario'? – sarnold
@FatalError fread應該返回什麼?它有時返回1,其他0,但在這兩種情況下,結果都是在一些「結構變量」中產生垃圾,而在其他情況下則是正確的。 編輯:所有的變量都是垃圾,不是幾個 –