Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1/1
Na této stránce jsou k dispozici zdrojové soubory, které jsem vytvářel při výkladu během výuky. Nejsou to ukázkové a bezchybné zdrojové soubory. Ba naopak, jsou to pracovní neučesané verze, které vznikaly interaktivně ve výuce, často s cílem ukázat, že "takto se to nemá".
1 /*
2 * Soubor: 20110211-Fri-mytee.c
3 * Datum: 11.02.2011
4 * Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
5 * Licence: GNU/GPL
6 * Úloha:
7 * Popis:
8 */
9
10 #define _ISOC99_SOURCE
11 #define _GNU_SOURCE
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <string.h>
15 #include <assert.h>
16 #include <stdbool.h>
17 #include <limits.h>
18 #include <math.h>
19 #include <unistd.h>
20
21 /**
22 * Vytiskne na stdout text s nápovědou.
23 */
24 void printHelp()
25 {
26 printf("Program mytee bere stdin a vypisuje na stdout.\n\n"
27 " mytee [-a] <soubor>\n\n"
28 "-a <soubor> se nepřepisuje ale stream"
29 " se zařadí na konec\n\n"
30 "-h vypíše tento help\n\n");
31 }
32
33 /////////////////////////////////////////////////////
34 /**
35 * Hlavní program.
36 */
37 int main(int argc, char *argv[])
38 {
39 char mode[]="w"; // mode pro fopen
40 FILE *fout;
41 int stream;
42 /*
43 * Zpracování parametrů příkazového řádku
44 */
45 int c;
46 while ((c = getopt(argc, argv, ":ah")) != -1) {
47 switch (c) {
48 case 'h':
49 printHelp();
50 return 0;
51 break;
52 case 'a':
53 sprintf(mode,"%s","a"); // mode pro fopen
54 break;
55 case '?':
56 printf("neplatná volba: %c\n", optopt);
57 break;
58 }
59 }
60
61 /* patametry, které nejsou přepínači */
62 //printf("%d %d\n",optind,argc);
63 if ( optind < argc ) {
64 fout = fopen(argv[optind],mode);
65 while ( (stream=getchar()) != EOF) {
66 putchar(stream);
67 fputc(stream,fout);
68 }
69 fclose(fout);
70 return 0;
71 } else {
72 fprintf(stderr,"ERROR: zadej vystupni soubor\n");
73 printHelp();
74 return 1;
75 }
76
77 }