2010-07-26 6 views
3

J'utilise Matlab pour créer un nouveau fichier en appelantPourquoi fopen échoue la première fois, mais fonctionne-t-il une deuxième fois?

fid = fopen(filename,'w') 

depuis le nom de fichier n'existe pas, il doit créer un nouveau fichier et donnez-moi un descripteur de fichier valide. Au lieu de cela, il renvoie -1. Si je réexécute le code cependant, je reçois fid = 3.

Ceci est en cours d'exécution sur ubuntu, mais il fonctionne apparemment bien sur Windows et je ne comprends pas pourquoi.

-Mike

+2

Avez-vous essayé d'obtenir le message de l'erreur pour voir ce qu'il vous dit? Vous pouvez le faire en ajoutant un autre argument de sortie à l'appel: '[fid, message] = fopen (nom de fichier, 'w')'. – gnovice

Répondre

2

ne sais pas si cela aide, mais notez que si le dossier n'existe pas, fopen avec « w » ne peut pas créer le fichier et retourne donc -1.

+0

Je corrige le code de quelqu'un elses, quelle commande crée des dossiers? – msandbot

+0

matlab a sa propre commande mkdir – second

0

Vous devez vérifier la forme d'argument à deux sorties fopen dans le document here. Cela vous permet de faire des choses comme

[fh, failmessage] = fopen(fname, 'wt'); 
if fh == -1 
    error('Failed to open %s: %s', fname, failmessage); 
end