27 lines
963 B
Markdown
27 lines
963 B
Markdown
# Moisture Detection 4
|
|
|
|
The moisture log again, walked with a pointer instead of an index.
|
|
|
|
## What is what
|
|
|
|
| File | |
|
|
| :--- | :--- |
|
|
| `stride.c` | Part A run it, read it but do not edit it |
|
|
| `walk.c` | Parts B and C your code goes here, at each `YOUR TASK` |
|
|
|
|
## What to do
|
|
|
|
1. **Part A.** Before you run `stride`, write down how many bytes apart `p` and `p + 1` are for a `char`, an `int` and a `double`, and what `*(pi + 1)` and `(pi + 3) - pi` print. Then run it and compare.
|
|
2. **Part B.** In `walk.c`, write `sum_ptr()` and `find()`. You are done when every `check` line says PASS.
|
|
3. **Part C.** In `sum_ptr()`, change `<` to `<=` so the pointer also reads at `levels + count`. Predict, then run it with the plain build and with AddressSanitizer. Put `<` back.
|
|
|
|
## Build and run
|
|
|
|
```
|
|
gcc -std=c17 -Wall -Wextra -o stride stride.c
|
|
./stride
|
|
gcc -std=c17 -Wall -Wextra -o walk walk.c
|
|
./walk
|
|
```
|
|
|
|
For Part C, add `-fsanitize=address -g` to the walk line.
|