Salve a tutti, il seguente codice viene compilato senza errori sia su Windows che su Mac OS X, ma su Mac OS X non fornisce alcun output quando viene lanciato l'eseguibile. Il programma dovrebbe leggere il file miofile.txt che si trova nella directory di root, dunque stampare la lista dei nomi scritti nel file, cosa che però non si vede. Uso il solito GCC 4.2.1 come compilatore, su Mac OS X 10.6. Come mai questo strano comportamento?
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
FILE* p = fopen("/miofile.txt","w");
//scrivi
fputs ("id;nome;cognome\n",p);
fputs ("1;mario;rossi\n",p);
fputs ("2;luigi;verdi\n",p);
fputs ("3;anna;valle\n",p);
fputs ("4;maria;riso\n",p);
fputs ("5;maria;epochè\n",p);
fputs ("6;maria;d'angiò\n",p);
fclose (p);
//leggi
FILE* p2 = fopen("/miofile.txt","r");
char riga[14];
char* res;
while(res!=NULL)
{
res=fgets(riga,14,p2);
cout<<riga;
}
fclose(p2);
}
Ho notato una cosa: aggiungendo alla fine del codice
delete p2;
di nuovo non si hanno errori di compilazione, ma quando si lancia l'eseguibile si ottiene il messaggio malloc: *** error for object 0x7fff70840f60: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug. Abort trap. Anche in questo caso, su Windows non ci sono problemi.
Grazie mille a chi vorrà darmi delucidazioni.