1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
// okay to copy/adapt

void print_string(const char* str) {
    for (int i = 0; str[i] != '\0'; i++) {
        fputc(str[i], stdout);
    }
    // don't print the null terminator
    // fputc(str[12], stdout);
    // index is 12 for "Hello World\n"
}

/* Returns the logical length of the string */
int get_string_length(const char* str) {
    int str_len = 0;    
    for (; str[str_len] != '\0'; str_len++) {
        // NO-OP
    }
    return str_len;
}

bool are_strings_equal(const char* str1, const char* str2) {
    for (int i = 0; str1[i] != '\0' || str2[i] != '\0'; i++) {
        if (str1[i] != str2[i]) {
            return false;
        }
    }
    return true;
}

/* No nice format code in printf for boolean, so we will convert to a string for printing */
const char* print_boolean(bool b) {
    return b ? "true" : "false";
}


int main(int argc, char* argv[]) {
    char* str = "Hello World\n";
    print_string(str);

    printf("length of str = %d\n", get_string_length(str));
    printf("length of 'abc' = %d\n", get_string_length("abc"));


    printf("'abc' == 'abc': %s\n", print_boolean(are_strings_equal("abc", "abc")));
    printf("'abc' == 'def': %s\n", print_boolean(are_strings_equal("abc", "def")));
    printf("'abc' == 'abcd': %s\n", print_boolean(are_strings_equal("abc", "abcd")));

    // don't print the null character
    return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */

© Copyright 2024 Alexander J. Quinn & David Burnett         This content is protected and may not be shared, uploaded, or distributed.