2010-10-12 4 views
0

Je suis juste en train d'essayer ma main dans bash, j'ai donc écrit un simple programme en C pour compter le nombre de caractères dans un fichier.Sortie de tuyauterie du programme C dans le fichier (bash)

Ceci est mon programme C:

#include <stdio.h> 

int main() 
{ 
    int i, nc; 
    nc = 0; 
    i = getchar(); 
    while (i!=EOF){ 
    nc = nc + 1; 
    i = getchar(); 
    } 
    printf("%d\n",nc); 

    return 0; 
} 

Ceci est la commande bash J'utilise pour compiler et exécuter:

gcc sign.c <bright_side_of_life> output 

Mon fichier de sortie est complètement vide cependant. Où vais-je mal?

Répondre

6

Vous devez compiler d'abord, puis exécutez:

gcc -o sign sign.c 
./sign <bright_side_of_life> output 

En outre, techniquement ce n'est pas redirigeant la sortie du programme dans un fichier; c'est simplement le rediriger. Si vous vouliez vraiment un tuyau impliqué, vous auriez probablement aller dans pour certains « abus félin » (signification, utilisez la commande « cat »):

./sign < bright_side_of_life | cat > output 

Cependant, la redirection d'E/S est plus normal et (bien que ce n'est pas vraiment important dans ce contexte) plus efficace.

+0

Hé, je suis content de ne pas être le seul à croire que c'est un peu plus efficace (mais ça n'a pas d'importance). –

+0

Merci. Ça a marché. Je finirai par l'envoyer à un script awk, une fois le programme C lancé – xbonez

3
gcc sign.c -o output 
./output <bright_side_of_life> size.txt 

et j'espère que vous pratiquez réellement votre langage C. sinon, il suffit d'utiliser l'outil wc

+0

lol ... ouais. Pratique juste C. Je suis tellement habitué à programmer en C#, C me tue. – xbonez

Questions connexes