IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Redirection de données à partir du terminal en C


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Redirection de données à partir du terminal en C
    Bonjour,

    je suis actuellement un novice pour tout ce qui a attrait à la programmation, mais je me suis lancé récemment dans la programmation C, en parallèle avec les commandes terminal de Linux (sachant que je suis sous Linux Mint). Récemment, j'ai commencé à me familiariser avec la redirection, à savoir que je voudrais que mon programme utilise des données contenues dans un fichier afin de les utiliser dans le code, mais c'est justement là que je coince.

    Voici le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    int main(void)
    {
    	int nbR;
    	if (nbR > 255)
    	{
    		erreur_nbR(nbR);
    	}
     
    	float couleur;
    	if (couleur < 0. || couleur > 1.)
    	{
    		erreur_couleur(couleur);
    	}
     
    	float seuil;
    	if (seuil < 0. || seuil > 1.)
    	{
    		erreur_seuil(seuil);
    	}
     
    	float s1;
    	float s2;
    	if (s1 > s2)
    	{
    		erreur_seuil_non_croissant(s1, s2);
    	}
     
    	if (s2 - s1 < TOLERANCE_SEUIL)
    	{
    		erreur_seuil_non_distinct(s1, s2);
    	}
     
    	else
    	{
    		correct();
    	}
     
    	return EXIT_SUCCESS ;
    }
    Ce que j'aimerais donc est que, lorsque je lance le code à partir du terminal, la valeur des variables (nbR, s2, s1, seuil et couleur) soient prises depuis un fichier texte de ce genre :

    0
    10

    0.4 0.4 0.4
    1. 1. 1. 0.4 0.4 0.4 1. 1. 1.
    0.4 0.4 0.4 1. 1. 1.
    0.4 0.4 0.4 1. 1. 1. 1. 1. 1. 1. 1. 1.

    0.1 0.2 0.3 0.4 0.5
    0.6 0.7 0.8 0.9

    3

    P3
    1 1
    255
    0 0 0
    J'ai donc pour cela essayé de lancer mon code avec la ligne de commande ./inter.sh -c < test1.txt, mais j'ai l'impression que le code n'arrive pas à déterminer quelles valeurs du fichier texte correspondent à quelles variables dans mon code. Quelqu'un aurait une astuce à me donner pour m'aider à me dépanner ?

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 286
    Points : 12 742
    Points
    12 742
    Par défaut
    Bonjour,

    La partie de code que tu donnes ne nous dit rien de comment tu récupères les données en entrée:
    Quand tu fait un printf, celui-ci (par défaut écrit sur la sortie standard, et donc si tu fais une redirection du genre ">fichier", alors la sortie standard devient ce fichier.
    C'est pareil, pour l'entrée standard, en C, l'équivalent de printf mais pour l'entrée qui est "scanf", et donc là quand tu fais ta redirection d'entrée "<fichier", considérera que son entrée est ce fichier (en gros, il remplace ton clavier).
    Après, c'est aussi à toi de traiter le format d'entrée pour savoir quels sont les valeurs à donner à tes fonctions.
    Bon, là, je te l'ai fait en gros, tu as maintenant des fonction plus simple que scanf pour ça, mais en "C" tout est en général à faire...
    Cordialement.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour,

    le C est un langage compilé, c'est-à-dire qu'il y a une phase de transformation d'un texte (comme celui que tu as écrit) en fichier binaire exécutable illisible.
    Les fichiers *.sh sont des fichiers textes non compilés qui s'interprètent par la commande sh.
    Ce n'est pas très adroit d'appeler ton fichier compilé "inter.sh" alors que c'est un fichier binaire.

    Ceci étant dit, les noms des variables n'existent pas: elles désignent dans chaque environnement des emplacements mémoire. Il ne suffit pas de rediriger un fichier vers ton exécutable pour qu'il soit prêt à utiliser ces variables nommées. Il faut que ton programme lui-même les intègre. Et là, ce n'est plus une question pour ce sous-forum, mais une question pour le sous-forum C.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. Réuperer les données à partir d'un fichier de log
    Par Oberown dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/10/2005, 10h08
  2. créer une base de donnée à partir d'un script
    Par illegalsene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/08/2005, 14h08
  3. Validation de données à partir d'un XML Schema
    Par leup dans le forum Valider
    Réponses: 2
    Dernier message: 10/06/2004, 08h30
  4. Réponses: 8
    Dernier message: 04/09/2003, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo