Apertura file con C
Ho un problema nell'apertura file: lo stesso sorgente compilato su windows non funziona su linux invece va. è normale? sbaglio qualcosa?
queste sono le librerie che ho messo
#include
#include
#include dovrebbe bastare stdio.h
e i comandi
FILE *filep;
filep=fopen("dati.txt","r");
mi sembra "da manuale"
qualcuno sa dirmi quale potrebbe essere il problema?
queste sono le librerie che ho messo
#include
#include
#include
e i comandi
FILE *filep;
filep=fopen("dati.txt","r");
mi sembra "da manuale"

Risposte
Il tuo codice per aprire il file sembra corretto. In che senso non funziona? In che modo leggi il file (per esempio con fread, fscanf, fgets...)?
Il più comune problema di portabilità dos<->unix relativo a routine che aprono file riguarda la modalità di apertura:
- Nel mondo DOS, windows, MacOS < 10 i file vengono aperti per default in modalità "testo", con interpretazione dei caratteri di fine linea ed altre manipolazioni; per aprire un file in modo "raw" o binario occorre specificare esplicitamente il modificatore "b".
- Nel mondo unix, ogni file è aperto in modalità binaria per default; il modificatore "b" è quindi accettato solo per compatibilità nei compilatori Posix, ma anche se omesso costituisce il comportamento di default.
Nel tuo problema c'è però qualche ambiguità, che può far pensare anche ad una eventuale altra spiegazione: fai menzione di un file .txt, che intuitivamente associamo ad un file ASCII human-readable, ma ne non specifichi il tipo di contenuti, né il formato (anche un banale file .txt può nascondere "sorprese" di portabilità tra OS diversi, a causa delle diverse convenzioni sui terminatori di linea).
- Nel mondo DOS, windows, MacOS < 10 i file vengono aperti per default in modalità "testo", con interpretazione dei caratteri di fine linea ed altre manipolazioni; per aprire un file in modo "raw" o binario occorre specificare esplicitamente il modificatore "b".
- Nel mondo unix, ogni file è aperto in modalità binaria per default; il modificatore "b" è quindi accettato solo per compatibilità nei compilatori Posix, ma anche se omesso costituisce il comportamento di default.
Nel tuo problema c'è però qualche ambiguità, che può far pensare anche ad una eventuale altra spiegazione: fai menzione di un file .txt, che intuitivamente associamo ad un file ASCII human-readable, ma ne non specifichi il tipo di contenuti, né il formato (anche un banale file .txt può nascondere "sorprese" di portabilità tra OS diversi, a causa delle diverse convenzioni sui terminatori di linea).
ragazzi grazie delle risposte. era un problema col compilatore se lanciavo da dev il programma non funzionava mentre lanciato "a mano" va. quindi risolto
