2012-05-30 24 views
5
function [org_data] = file_manipulation(in_fname, txt_fname, mat_fname) 
    org_data = round(load(in_fname)); 

    fid = fopen(txt_fname,'wt+'); 
    student_id = '9900'; 
    txt = [txt_fname ' : ' student_id '\nDate of creation:' datestr(now,'dd/mm/yyyy')]; 
    fprintf(fid,'%s',txt); 

end 

En lugar de insertar una nueva línea en el archivo generado es:escribir nueva línea en un archivo de texto en Matlab

C:\w2\test1.txt : 9900\nDate of creation:30/05/2012 

¿Cuál es la problen con mi código?

Respuesta

5

Uso sprintf hacer esas cadenas:

fprintf(fid, sprintf('%s : %s\nDate of creation: %s', txt_fname, student_id, datestr(now,'dd/mm/yyyy'))); 

La forma en que lo está haciendo ahora, se trata a la barra invertida como un literal.

+0

En otras palabras, \ n es interpretado por la familia de funciones sprintf, no al nivel del preprocesador como otros lenguajes. – Peter

+0

MATLAB no fue diseñado para la manipulación de cadenas ... – Ansari

+0

Lo siento, no lo entiendo, ¿incluso cuando no usa variables? (Acabo de editar la respuesta para reemplazar las comillas dobles con comillas simples). – Ansari

0

convertir el '\ n' para duplicar antes de insertarlo en la cadena:

fid = fopen('my_file.txt', 'w'); 
fwrite(fid, ['First line' double(sprintf('\n')) 'Second line']) 
fclose(fid); 

Gracias a Franck Dernoncourt, Reseach Scientist en Adobe Investigación.

Cuestiones relacionadas