c redirect input codeblocks output

Bloques de código que redirigen la salida de entrada



redirect input (6)

Soy nuevo en los bloques de código, y parece que no puedo hacer que funcione con argumentos de línea de comando de <input> output. ¿Alguien sabe cómo?

Actualmente puedo leer un archivo pasado de argv [1] pero el programa no lee automáticamente la entrada del archivo dado ni lo hace a la salida del archivo.

Soy consciente de que está en los argumentos del programa establecido, mi línea de argumentos es: list.txt <input> output

Después de algunas investigaciones, vi a un chico haciéndolo así: <./input> ./output, parece que ejecutar un programa para dar la entrada y salida, de todos modos, también lo he intentado sin éxito. ¿Necesito usar manejadores de archivos para interactuar con él? No tiene sentido, getchar simple () debería leer del archivo de entrada que pasa.

¿Que me estoy perdiendo aqui?

Gracias por adelantado



He encontrado la manera de hacerlo en CB 13.12

Tools -> Configure Tools -> Add: Name: whatever Executable: C:/Windows/System32/cmd.exe Parameters: /C ${TARGET_OUTPUT_BASENAME} exampleArg1 <inputFileRedirect.txt Working Directory: ${TARGET_OUTPUT_DIR}

Básicamente inicia la consola de Windows y le pasa Parámetros . También puede asignar atajos de teclado a estas herramientas. La única desventaja que puedo ver es que las herramientas no son específicas de un proyecto.


He estado trabajando con Code :: Blocks desde hace un tiempo y hace poco noté lo mismo al menos con Code :: Blocks 12.11 en Windows. Las redirecciones > y < no funcionan en el Proyecto -> Establecer argumentos de programas ...

Una solución hackosa es hacer la ejecución en el paso posterior a la construcción.

Haga clic derecho en el project name -> Build options... -> Pre/post build steps -> Post-build steps:

cmd /C cd /D "bin/$(TARGET_NAME)/" & YourApplicationNameHere.exe >output.txt 2>errors.txt

Y marque la casilla de verificación Ejecutar siempre, incluso si el objetivo está actualizado. Ahora presiona Ctrl + F9 y el programa se ejecuta como el último paso del proceso de construcción.


Intenté casi todas las opciones y no pude hacer que funcione: P Después de estar harto de todo eso, básicamente uso el procesamiento de archivos para hacer mi trabajo (uf)

esto es lo que hice en el código

En el alcance global escribí:

#define DEBUG #ifdef DEBUG #include<fstream> ifstream Inputfile; ofstream Outputfile; #define cin Inputfile #define cout Outputfile #endif //#ifdef DEBUG

Y en general, escribí lo siguiente antes de hacer cualquier otra cosa:

int main(){ #ifdef DEBUG Inputfile.open("Input.txt"); Outputfile.open("Output.txt");; #endif // #ifdef DEBUG

Finalmente, justo antes de cerrar el proceso principal, hizo esto:

#ifdef DEBUG Inputfile.close(); Outputfile.close(); #endif // #ifdef DEBUG

Después de esto agregaron dos archivos

Input.txt

&

salida.txt

al proyecto

Esto funcionó como se esperaba


Pude obtener una entrada redireccionada a mi programa c configurando los argumentos del programa en el menú del proyecto.

Vaya a Top Menu>Project>Set programs'' arguments y ponga </absolute/path/to/yourinputfile notice < en el inicio, engaña los bloques de código en el archivo de redirección en lugar de pasar el argumento.


Sé que este es un tema antiguo, pero ninguna de las soluciones es lo suficientemente buena. Para Windows, probablemente vaya con la siguiente definición de macro (ya que puede necesitarla también para la impresión de depuración o similar) en el alcance global

#include <cstdio> #ifdef DEBUG #define D(X) X #else #define D(X) #endif

Luego, como la primera o segunda línea (si necesita std :: ios :: sync_with_stdio (false);) en main use como

int main() { D(freopen("input.txt","r",stdin);) D(freopen("ouput.txt","w",stdout);) ...

Y defina en Code :: Blocks en Projects> Build Options ...> (Debug, Configuraciones del compilador, #defines)

DEPURAR

Esperando que "input.txt" sea el archivo de entrada de texto en la carpeta donde se encuentran el resto de los archivos .c o .cpp, y "output.txt" será el archivo de salida generado en la misma carpeta (o ambos pueden ser agregados) al proyecto como tales archivos para facilitar la edición / visualización).

Esta solución funcionará con cin / cout y scanf / printf.