1

bon, ne riez pqs c est mon premier prog en C sous unix grin
(je ne sais pas me servir d unix, j essaye d apprendre, et je ne sais meme pas auel shell c est... sad)

dc voila le pbl:
j ai un prog repondant au doux nom de "main" grin
ce prog affiche juste les parametres au on lui passe... (heu, c tres dur pour moi grin)

il marche nikel si je lappelle comme ca:
main a b c d e f
il affiche les params: a,b,c,d,e,f
par contre si je veux lui paser un fichier comme parametre, il trouve au il y a aucun param... pourtant le fichier est pas vide..
la syntaxe est pete pas bonne confus:
main < tst
avec tst le fichier texte
et la il me dit qu il a trouve aucun parametre... sad

bon, voila la source du prog capricieux:

#include "init.h"

int main (int ac, char **av)
{
  printf("ac==%i\nav==%s\n",ac,av[ac-1]); //debug
  if (! init (ac, av)) return (FALSE);
  return (TRUE);
}


et init.h:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include "vars.h"

int init (int np, char **pp)
{
  int i;
  if (--np)
    {
      printf ("Found %i parameters:\n",np);
      for (i = 0; i++ < np; *(++pp))
	{
	  printf ("P%i: %sn",i,pp[1]);
	}
      return (TRUE);
    }
  printf ("error: no parameters specified to program \"%s\"\n",pp[0]);
  return (FALSE);
}


vqlq smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

2

Yaro move ca dans la bonne section ! Forum Programmation / C !

3

hum, je pensais que c etait un forum commun comme achat/vente... il a la meme icone jaune... dsl si c est pas le cas smile
heu, en attendant qu il le bouge, qqun aurait une idee? grin
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

4

bon, ben j'imagine que ton shell est Bash grin, alors fait ça : "cat nom_du_fichier | main"

Ca s'appelle un tube : tu redirige la sortie standard de cat, ici le contenu de ton fichier, vers l'entrée standard de main. Ca doit marcher sans problemes wink
Mon site perso : http://www.xwing.info

5

oui, c est bash, et le pipe, je pensais pas qu ca s utilisait aussi pr les fichiers... enfin apparemment la c cat qui balance sa sortie dans le pipe a mon prog... okkkk smilesmilesmile cool (je connaissais pas "cat" grin)
heu merde ca marche pa... put1 main recupere de nouveau qu un seul parametre...
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

6

ah ben ça, c'est byzarre...
Mon site perso : http://www.xwing.info

7

ui, ca doit venir de mon code... pke cat tst tout seul renvoie bien le contenu du fichier... dc logikement ca devrait bien lenvoyer a main... y a une couille qque part ds main, ms je vois pas ou...
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

8

sinon, tu passe paramètre à main le nom du fichier, et tu lis le fichier avec des fopen et tout ?
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

9

nan, je peux pas.. pour ce ke je dois faire avec apres, chui oblige d en passer par ce passage de parametres... c impose ds l enonce du proj sad
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

10

arf, OK.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

11

ah, un autre truc, si je fe:

cat tst | main

ca voit aucun parametre
et si je fais:

cat tst | main a b c d

ca trouve a,b,c et d comme seuls parametres...
pareil aue si je fais

main a b c d

bon je comprends pas...
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

12

huhu, c'est vraiment bizarre. En plus, cat tst | main est rigoureusement identique à main <tst...
met ton fichier tst et la sortie affichée par main, pour voir.
Mon site perso : http://www.xwing.info

13

ok, je copie colle:

bash-2.05$ ls
#main.c#     init.h       main.c       test1.rep.rn tst
Makefile     main         main.o       test1.test   vars.h
bash-2.05$ cat tst
10
3-4
5-6
4-7
23-4
0-4
1-4
3-1
3-23
5-0
23-0
23-1
6-11
11-12
12-13
13-14
14-15
15-7
0-17
17-18
18-19
19-20
bash-2.05$ main a b test 123 %Gh
ac==6
av==%Gh
Found 5 parameters:
P1: a
P2: b
P3: test
P4: 123
P5: %Gh
bash-2.05$ cat tst | main
ac==1
av==main
error: no parameters specified to program "main"
bash-2.05$ cat tst | main a b c d
ac==5
av==d
Found 4 parameters:
P1: a
P2: b
P3: c
P4: d
bash-2.05$


vala...
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

14

essaie peut-être avec un fichier qui a pas des retours chariot entre les argument...
Et qu'est-ce qu'il dit avec "main <tst" ?

Ca m'étonnerait que ce soit ça, mais bon...
Mon site perso : http://www.xwing.info

15

main < tst ca fait pareil que cat tst | main
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

16

Arf, ça doit être ton prog, pourtant, il a pas l'air buggé...
Mon site perso : http://www.xwing.info

17

1. Il faut être fort pour ne pas savoir quell shell on a devant soi si on est devant un prompt "bash-2.05$". grin
2. C'est normal que tu ne voies pas la redirection comme un paramètre. La redirection redirige le fichier vers stdin, pas vers la liste des paramètres. Tu dois lire le fichier comme tu lirais le clavier.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

18

erf, explique la, parceque... C'est bien fait pour ça les pipes et "<", non ?
Mon site perso : http://www.xwing.info

19

"1. Il faut être fort pour ne pas savoir quell shell on a devant soi si on est devant un prompt "bash-2.05$"."

bon, alors la je m'explique kevin... quand j'ai posté ce sujet, le prompt c'était un truc du genre:
<bila@machin 34>blablabla
un truc comme ça
après avoir posté PpHd m'a conséillé de taper "bash" ok? grin
et puis je ne connais STRICTEMENT rien a unix smile
(mais la kan même, je savais que en tapant "bash" j'av lancé le shell "bash" lol)

"Tu dois lire le fichier comme tu lirais le clavier"
ok, la déjà c'est plus clair, effectivement c ce qu'il m'avait semblé vaguement comprendre, c que les <>| détournaient les IO standards, dc ok smile
par contre, c bien beau tout ça mais... comment on lit le clavier? gringringrin
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

20

Tu utilises les fonctions de lecture de fichiers avec le handle spécial stdin.

Par exemple:
x=getc(stdin);
ou:
fread(buffer,16,1,stdin);
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

21

ok merci j'essayerai ça smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

22

pour moi c normal que main < tst ne trouve aucun argument car:

le '<' ne fais que dire au shell 'on change l'adresse du buffer d'entree'
c a d au lieu d'attendre l'entre de quelque chose au clavier on l'attend dans le fichier tst !
et appres ca execute main qui n'a pas d'argument

si tu fais main a z c d > tst tu vas voir rien ne vas s'afficher mais si tu ouvre le fichier tst tu y auras a,z,c,d wink

pour lire les argument dans un fichier:
file fichier;
char lec[2];
if(argc==2)
{
file=fopen(argtv[1],"r")
while(!eof(file))
{
lec[1]=0;
fread(lec,1,1,file);
printf("%s ",lec);
}

ou un truc dans le genre mais c le principe wink
IP IP OURA ! ;)