2011-06-30 9 views
5

Estoy tratando de enviar una matriz que es [2 x N] el doble de grande a un archivo de texto usando el comando fprintf(). Estoy teniendo problemas porque fprintf() no reconoce el nuevo comando de línea (\n) o el comando de retorno de carro (\r). El código que estoy utilizando esfprintf no está imprimiendo la nueva línea

fid = fopen([Image.Dir,'CtlPts_',Image.Files{k},'.txt'],'w'); 
fprintf(fid,'%.4f\t%.4f\n',control_points{k}); 
fclose(fid); 

donde los datos que estoy tratando de impresión se encuentra en la celda control_points{k}.

La pestaña se imprime bien, pero todo en el archivo de texto se imprime en una línea, por lo que es por eso que estoy asumiendo que está ignorando mi nuevo carácter de línea.

¿Hay algún problema con mi sintaxis que no veo?

+2

has hecho un vuelco del archivo? Sé que en muchos sistemas, \ n no es suficiente para crear lo que estás pidiendo (y entonces, tal vez tienes que hacer \ r \ n) – KevinDTimm

+0

@KevinDTimm No estoy seguro de qué es hacer un volcado de un archivo (podría explicar en un formato de respuesta) pero el uso de \ r \ n funcionó. Publique esto como una respuesta y lo seleccionaré. –

+0

el motivo del vuelco es verificar que el archivo realmente contiene \ n. Si lo hace (lo cual es probable), entonces se aplica la segunda parte de mi comentario/respuesta. – KevinDTimm

Respuesta

9

sé que en muchos sistemas, \ n no es suficiente para crear lo que estás pidiendo (y así, tal vez usted tiene que hacer \ r \ n)

+0

'\ r \ n' realmente solo se aplica a Windows, la mayoría de las otras plataformas usan' \ n'. –

+0

@RemyLebeau - Y, sin embargo, parece que esta era la solución al problema – KevinDTimm

8

Una solución alternativa es open el archivo en modo texto, de esa manera MATLAB inserta automáticamente un retorno de carro \r antes de cualquier \n carácter de nueva línea en la salida en los sistemas Windows:

fid = fopen('file.txt', 'wt'); 
fprintf(fid, '%f\t%f\n', rand(10,2)); 
fclose(fid); 

Tenga en cuenta que esto es algo innecesario, ya que la mayoría de los editores (con la excepción de Microsoft Bloc de notas) reconocer U terminaciones de línea nix/Mac/Windows.

Cuestiones relacionadas