Les blocs de code redirigeant la sortie d’entrée

Je connais les blocs de code et je n’arrive pas à le faire fonctionner avec les arguments en ligne de commande de la sortie . Est-ce que quelqu’un sait comment?

Je suis actuellement capable de lire un fichier passé de argv [1] mais le programme ne lit pas automatiquement l’entrée du fichier donné, ni la sortie vers la sortie du fichier.

Je suis conscient que c’est sur les arguments du programme set, ma ligne d’arguments est la suivante: list.txt output

Après quelques recherches, j’ai vu un gars le faire comme ceci: ./output, cela ressemble à exécuter un programme pour donner l’entrée et la sortie, de toute façon, j’ai aussi essayé en vain. Dois-je utiliser des gestionnaires de fichiers pour interagir avec lui? Cela n’a pas de sens, getchar () devrait lire le fichier d’entrée.

Qu’est-ce que j’oublie ici?

Merci d’avance

J’ai trouvé un moyen de le faire dans la CB 13.12

 Tools -> Configure Tools -> Add: Name: whatever Executable: C:\Windows\System32\cmd.exe Parameters: /C ${TARGET_OUTPUT_BASENAME} exampleArg1  

Il lance essentiellement la console Windows et lui transmet les parameters . Vous pouvez également affecter des raccourcis clavier à ces outils. Le seul inconvénient que je puisse constater est que les outils ne sont pas spécifiques à un projet.

Je travaille avec Code :: Blocks depuis un certain temps et je l’ai récemment noté au moins avec Code :: Blocks 12.11 dans Windows. Les redirections > et < ne fonctionnent pas dans le projet -> Définir les arguments des programmes

Une solution bidon consiste à exécuter l’exécution en phase post-build.

Cliquez avec le bouton droit sur le 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 

Et cochez la case Toujours exécuter, même si la cible est à jour. Appuyez maintenant sur Ctrl + F9 et le programme est exécuté comme dernière étape du processus de construction.

Je pense que c’est le problème de cb_console_runner.exe qui lance votre programme dans l’ EDI . ConsoleRunner ne peut pas interpréter le symbole de redirection. Donc, j’ajoute du code au code original de codeblocks 13.12. Veuillez copier le fichier lié dans [dossier cb]. (N’oubliez pas de sauvegarder l’original.)

binary: http://limity.tistory.com/attachment/cfile30.uf@241A8D485621595131B28F.exe

code source: http://limity.tistory.com/attachment/cfile23.uf@231AF3485621595232A632.cpp

J’ai été en mesure de redirect les entrées vers mon programme c en définissant les arguments du programme dans le menu projet.

Naviguez vers le Top Menu>Project>Set programs' arguments et mettez notice < au début, astuces codeblocks dans un fichier de redirection au lieu de passer des arguments.

entrez la description de l'image ici

Je sais que c’est un sujet ancien, mais aucune des solutions n’est suffisante. Pour Windows, j’irais probablement avec la définition de macro suivante (car vous en aurez peut-être besoin également pour l’impression de débogage ou similaire) au niveau global

 #include  #ifdef DEBUG #define D(X) X #else #define D(X) #endif 

Ensuite, comme première ou deuxième ligne (si vous avez besoin de std :: ios :: sync_with_stdio (false);), utilisez la comme

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

Et définissez dans Code :: Blocks sous Projets> Options de construction …> (Debug, Paramètres du compilateur, #defines)

DÉBOGUER

S’attendant à ce que “input.txt” soit le fichier d’entrée de texte du dossier contenant le rest des fichiers .c ou .cpp, et “output.txt” soit le fichier de sortie généré dans le même dossier (ou ils peuvent être ajoutés au projet en tant que tels fichiers pour une édition / visualisation plus facile).

Cette solution fonctionnera à la fois avec cin / cout et scanf / printf.

J’ai essayé presque toutes les options et je n’ai pas réussi à le faire fonctionner: P Après en avoir marre de tout ça, j’utilise essentiellement le traitement de fichier pour faire mon travail (ouf)

voici ce que j’ai fait dans le code

À l’échelle mondiale, j’ai écrit:

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

& en général, j’ai écrit ce qui suit avant de faire autre chose:

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

Finalement, juste avant de fermer le processus principal,

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

Après cela, ajouté deux fichiers

Input.txt

Et

output.txt

au projet

Cela a fonctionné comme prévu