commit c4d09d889b490e037088cc0bfd290f273ea8dca4 from: jrmu date: Tue Jan 20 01:35:04 2026 UTC Adding code solutions up until 1-10.c commit - 7bdbee065bfa8d12eda731448540f5935d938f71 commit + c4d09d889b490e037088cc0bfd290f273ea8dca4 blob - /dev/null blob + 988f4bbeb82ce6dc19e2e3bd99edd391fba385d3 (mode 644) --- /dev/null +++ 1-10.c @@ -0,0 +1,20 @@ +/* 1-10 Write a program to copy its input to its output, replacing each tab by + * \t, each backspace by \b, and each backslash by \\. This makes tabs and + * backspaces visible in an unambiguous way. */ + +#include +int main() { + int c; + enum { out, in } word; /* indicates whether inside a word */ + while ((c = getchar()) != EOF) { + if (c == ' ' || c == '\t') { + if (word == in) { + putchar(' '); + } + word = out; + } else { + putchar(c); + word = in; + } + } +} blob - /dev/null blob + 932b8a6f8d34a15c2115ae5066f6d6804bfbeaeb (mode 644) --- /dev/null +++ 1-8-2.c @@ -0,0 +1,18 @@ +/* 1-8 Write a program to count blanks, tabs, and newlines. */ + +#include +int main() { + int c; + int bl, tb, nl, ws; + bl = tb = nl = ws = 0; + while ((c = getchar()) != EOF) { + if (c == ' ') { + bl++; ws++; + } else if (c == '\t') { + tb++; ws++; + } else if (c == '\n') { + nl++; ws++; + } + } + printf("Blanks: %d, Tabs: %d, Newlines: %d, White space: %d\n", bl, tb, nl, ws); +} blob - /dev/null blob + 7b7ada2f4b4c6185fe68ce5570609f972bb204aa (mode 644) --- /dev/null +++ 1-8-text @@ -0,0 +1,2 @@ +"_Stoop, stoop!_" I did not understand him, till I felt my head hit against the +beam. blob - /dev/null blob + 04d5d58fc12b9effe87cfcab350527ab64f6ac1c (mode 644) --- /dev/null +++ 1-8.c @@ -0,0 +1,13 @@ +/* 1-8 Write a program to count blanks, tabs, and newlines. */ + +#include +int main() { + int c; + int ws = 0; + while ((c = getchar()) != EOF) { + if (c == ' ' || c == '\t' || c == '\n') { + ws++; + } + } + printf("White space: %d\n", ws); +} blob - /dev/null blob + 4af251ab0bcbebecef04a1c419ac100231e31b6b (mode 644) --- /dev/null +++ 1-9-2.c @@ -0,0 +1,19 @@ +/* 1-9 Write a program to copy its input to its output, replacing each string + * of one or more blanks by a single blank. */ + +#include +int main() { + int c; + enum { out, in } word; /* indicates whether inside a word */ + while ((c = getchar()) != EOF) { + if (c == ' ' || c == '\t') { + if (word == in) { + putchar(' '); + } + word = out; + } else { + putchar(c); + word = in; + } + } +} blob - /dev/null blob + 298797d256d5747f7d6a176d558d92df054d4425 (mode 644) --- /dev/null +++ 1-9-text @@ -0,0 +1,4 @@ +" _Stoop, stoop!_" +I did not understand him, + till I felt my head hit against the + beam. blob - /dev/null blob + a0c626dc66c6584e9904398fa769d3eeba42c1b5 (mode 644) --- /dev/null +++ 1-9.c @@ -0,0 +1,19 @@ +/* 1-9 Write a program to copy its input to its output, replacing each string + * of one or more blanks by a single blank. */ + +#include +int main() { + int c; + int inside = 1; /* 1 when inside a word, 0 otherwise */ + while ((c = getchar()) != EOF) { + if (c == ' ' || c == '\t') { + if (inside == 1) { + putchar(' '); + } + inside = 0; + } else { + putchar(c); + inside = 1; + } + } +}