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.