salto print notacion linea leer formatos formato exponencial cientifica avanzado archivos string fortran fortran90 gfortran fortran77

string - print - Lectura de una cadena con espacios en Fortran



print en fortran (2)

El uso de lectura (asterisco, asterisco) en Fortran no parece funcionar si la cadena que se va a leer del usuario contiene espacios. Considera el siguiente código:

character(Len = 1000) :: input = '' '' read(*,*) input

Si el usuario ingresa la cadena "Hola, mi nombre es John Doe", solo se almacenará en la entrada "Hello"; todo después de que el espacio no se tenga en cuenta. Mi suposición es que el compilador supone que "Hola" es el primer argumento, y que "mi" es el segundo, así que para capturar las otras palabras, tendríamos que usar algo como read ( , ) input1, input2, input3 ... etc. El problema con este enfoque es que necesitaríamos crear matrices de caracteres grandes para cada entrada, y necesitamos saber exactamente cuántas palabras se ingresarán. ¿Hay alguna forma de evitar esto? Alguna función que realmente leerá toda la oración, espacios y todo? ¡Muchas gracias!


En lugar de read(*, *) , intente read(*, ''(a)'') . No soy un experto en Fortran, pero el segundo argumento para read es el especificador de formato (equivalente al segundo argumento para sscanf en C). * no significa formato de lista, que no desea. También puede decir a14 si quiere leer 14 caracteres como una cadena, por ejemplo.


character(100) :: line write(*,''("Enter some text: ",/)'') read(*,''(A)'') line write(*,''(A)'') line end

... leerá una línea de texto de una longitud máxima de 100 (suficiente para la mayoría de los propósitos prácticos) y la escribirá de nuevo. Modificar a tu gusto