diff --git a/semester3/spca/code-examples/00_c/03_arrays.c b/semester3/spca/code-examples/00_c/03_arrays.c index 65d27fb..59424a7 100644 --- a/semester3/spca/code-examples/00_c/03_arrays.c +++ b/semester3/spca/code-examples/00_c/03_arrays.c @@ -11,5 +11,10 @@ int main( int argc, char *argv[] ) { printf( "%d\n", *( data + 5 ) ); // equivalent as above int multidim[ 5 ][ 5 ]; // 2-dimensional array // We can iterate over it using two for-loops + int init_array[ 2 ][ 2 ] = { + {1, 2}, + {3, 4} + }; // We can initialize an array like this + int empty_arr[ 4 ] = {}; // Initialized to 0 return 0; } diff --git a/semester3/spca/code-examples/00_c/04_strings.c b/semester3/spca/code-examples/00_c/04_strings.c new file mode 100644 index 0000000..f2aba91 --- /dev/null +++ b/semester3/spca/code-examples/00_c/04_strings.c @@ -0,0 +1,15 @@ +#include +#include + +int main( int argc, char *argv[] ) { + char hello[ 6 ] = "hello"; // Using double quotes + char world[ 6 ] = { 'w', 'o', 'r', 'l', 'd', '\0' }; // As array + + char src[ 12 ], dest[ 12 ]; + strncpy( src, "ETHZ", 12 ); // Copy strings (extra elements will be set to \0) + strncpy( dest, src, 12 ); // Copy strings (last arg is first n chars to copy) + if ( strncmp( src, dest, 12 ) ) // Compare two strings. Returns 1 if src > dest + printf( "Hello World" ); + strncat( dest, " is in ZH", 12 ); // Concatenate strings + return 0; +} diff --git a/semester3/spca/code-examples/00_c/04_pointers.c b/semester3/spca/code-examples/00_c/05_integers.c similarity index 100% rename from semester3/spca/code-examples/00_c/04_pointers.c rename to semester3/spca/code-examples/00_c/05_integers.c diff --git a/semester3/spca/parts/00_c/01_basics/06_pointers.tex b/semester3/spca/code-examples/00_c/06_pointers.c similarity index 100% rename from semester3/spca/parts/00_c/01_basics/06_pointers.tex rename to semester3/spca/code-examples/00_c/06_pointers.c diff --git a/semester3/spca/code-examples/00_c/arrays b/semester3/spca/code-examples/00_c/arrays deleted file mode 100755 index 664894b..0000000 Binary files a/semester3/spca/code-examples/00_c/arrays and /dev/null differ diff --git a/semester3/spca/parts/00_c/01_basics/05_strings.tex b/semester3/spca/parts/00_c/01_basics/05_strings.tex index e69de29..16504e0 100644 --- a/semester3/spca/parts/00_c/01_basics/05_strings.tex +++ b/semester3/spca/parts/00_c/01_basics/05_strings.tex @@ -0,0 +1,6 @@ +\subsubsection{Strings} +\lC\ doesn't have a \texttt{string} data type, but rather, strings are represented (when using \texttt{ASCII}) as \texttt{char} arrays, +with length of the array $n + 1$ (where $n$ is the number of characters of the string). +The extra element is the termination character, called the \texttt{null character}, denoted \verb|\0|. +To determine the actual length of the string (as it may be padded), we can use \verb|strnlen(str, maxlen)| from \texttt{string.h} +\inputcodewithfilename{c}{code-examples/00_c/}{04_strings.c} diff --git a/semester3/spca/parts/00_c/01_basics/06_integers.tex b/semester3/spca/parts/00_c/01_basics/06_integers.tex new file mode 100644 index 0000000..e69de29 diff --git a/semester3/spca/parts/00_c/01_basics/07_pointers.tex b/semester3/spca/parts/00_c/01_basics/07_pointers.tex new file mode 100644 index 0000000..e69de29 diff --git a/semester3/spca/parts/00_c/02_preprocessor/00_intro.tex b/semester3/spca/parts/00_c/02_preprocessor/00_intro.tex index e69de29..9267262 100644 --- a/semester3/spca/parts/00_c/02_preprocessor/00_intro.tex +++ b/semester3/spca/parts/00_c/02_preprocessor/00_intro.tex @@ -0,0 +1 @@ +\subsection{The C preprocessor} diff --git a/semester3/spca/parts/00_c/03_memory/00_intro.tex b/semester3/spca/parts/00_c/03_memory/00_intro.tex new file mode 100644 index 0000000..e69de29 diff --git a/semester3/spca/parts/00_c/04_floating-point/00_intro.tex b/semester3/spca/parts/00_c/04_floating-point/00_intro.tex new file mode 100644 index 0000000..e69de29 diff --git a/semester3/spca/parts/00_c/05_toolchain/00_intro.tex b/semester3/spca/parts/00_c/05_toolchain/00_intro.tex new file mode 100644 index 0000000..e69de29 diff --git a/semester3/spca/spca-summary.pdf b/semester3/spca/spca-summary.pdf index 48e0fda..d5d2b50 100644 Binary files a/semester3/spca/spca-summary.pdf and b/semester3/spca/spca-summary.pdf differ diff --git a/semester3/spca/spca-summary.tex b/semester3/spca/spca-summary.tex index f7afbab..609cfd5 100644 --- a/semester3/spca/spca-summary.tex +++ b/semester3/spca/spca-summary.tex @@ -67,6 +67,7 @@ \input{parts/00_c/01_basics/04_arrays.tex} \input{parts/00_c/01_basics/05_strings.tex} \input{parts/00_c/01_basics/06_pointers.tex} +\input{parts/00_c/02_preprocessor/00_intro.tex} % ── Intro to x86 asm ────────────────────────────────────────────────