Search
I like b3b36prg!
#include <stdio.h> int main(void) { printf("I like b3b36prg!\n"); printf("I like b3b36prg!\n"); printf("I like b3b36prg!\n"); printf("I like b3b36prg!\n"); return 0; }
který následně upravte využitím cyklu
#include <stdio.h> int main(void) { for (int i = 0; i < 4; ++i) { printf("I like b3b36prg!\n"); } return 0; }
Vyzkoušejte kompilaci a spuštění programu, např.
clang program.c && ./a.out
nebo
clang program.c -o program && ./program
main
#include <stdio.h> int main(int argc, char *argv[]) { for (int i = 0; i < argc; ++i) { printf("I like b3b36prg!\n"); } return 0; }
./program
./program 1 2 3
./program a b c e
wc
man wc
./program 2 3 4 | wc
getchar()
man getchar
int r = getchar(); for (int i; i < r; ++i) { printf("I like b3b36prg!\n"); }
enter
1
./a.out | wc
r = r - '0';
echo 1 | ./program
echo 3 > in.txt
cat in.txt
gedit in.txt
code in.txt
./program < in.txt
in.txt
touch empty.txt
return r < 0 || r > 9;
#include <stdio.h> int main(void) { int r = getchar(); r = r - '0'; for (int i = 0; i < r; ++i) { printf("I like b3b36prg!\n"); } return r < 0 || r > 9; }
./program <in.txt; echo $? ./program <empty.txt; echo $? echo 'a' | ./program; echo $?
Dosud jsme načítali pouze jeden znak (cifru). Pokud však chceme načíst číslo jako např. 123, musíme číst znaky jeden po druhém a postupně z nich sestavit výslednou číselnou hodnotu.
1) Inicializujeme výslednou proměnnou hodnota = 0. 2) V cyklu čteme znaky (např. pomocí getc(stdin) nebo getchar()). 2.a) Pokud je znak cifra ('0' až '9'): 2.a.1)Převedeme znak na číslo: cifra = znak - '0'. 2.a.2) Posuneme stávající hodnotu o řád výše (vynásobíme deseti) a přičteme novou cifru: hodnota = hodnota * 10 + cifra. 2.b) Pokud narazíme na jiný znak (např. mezeru nebo konec řádku), 2.b.1)čtení ukončíme.
#include <stdio.h> int main(void) { int r = 0; int c; while ((c = getchar()) >= '0' && c <= '9') { int digit = c - '0'; r = r * 10 + digit; } for (int i = 0; i < r; ++i) { printf("%d: I like b3b36prg!\n", i + 1); } return 0; }
-
Ctrl+D
scanf()
man scanf
#include <stdio.h> int main(void) { int ret = 0; int n; int r = scanf("%d", &n); if (r == 1) { for (int i = 0; i < n; ++i) { printf("I like b3b36prg!\n"); } } else { fprintf(stderr, "ERROR: Wrong input!\n"); ret = 100; } return ret; }
int n; int r = scanf("%d", &n); fprintf(stderr, "DEBUG: r: %d n: %d\n", r, n);
clang program.c && echo 4 | ./a.out | wc
stderr
“ERROR: Out of range!\n”
101
if (n >= 0 && n <= 9) { ... } else { fprintf(stderr, "ERROR: Out of range!\n"); ret = 101; }
void print_line(int n);
void print_line(int n) { for (int i = 0; i < n; ++i) { printf("I like b3b36prg!\n"); } }
EOT
Ctrl+Z
out.c
out
echo 10 | ./out echo 10 | ./out | wc echo 10 | ./out > output.txt cat output.txt wc output.txt
in
100
int r, n; while ((r = scanf("%d", &n)) == 1) { // increment of the counter } if (r == 0) { fprintf(stderr, "ERROR: Wrong input detected!\n"); ret = 100; } else { fprintf(stderr, "ERROR: Number lines %d!\n", counter); ret = 101; }
echo 10 | ./out > output.txt ./in < output.txt
printf(“%d\n”, i);
printf(“%d ”, i);
i
for
echo 10 | ./out | ./in