diff --git a/assignment7.txt b/assignment7.txt new file mode 100644 index 0000000..6948515 --- /dev/null +++ b/assignment7.txt @@ -0,0 +1,19 @@ +Yael Kelmer. + +1. ++*p increments the value of the datatype located at pointer p and then points at that location. *p++ points at the location in memory of p and then increments the value there. + +2. The left to right order is guaranteed for operator precedence. + + +3. One advantage of pointers is that you can move along a string and point to different parts of it. + +4.1 datatype: char array +4.2 this is invalid +4.3 datatype: int. value: 0 +4.4 datatype: int. value: 10 +4.5 datatype: int. value: 10 +4.6 datatype: int. value: 12 +4.7 datatype: address. a[0] +4.8 datatype: character +4.9 datatype: address. +4.10 datatype: int. value: 5 diff --git a/reverse.c b/reverse.c new file mode 100644 index 0000000..3fa384f --- /dev/null +++ b/reverse.c @@ -0,0 +1,27 @@ +/* Yael Kelmer. + This code takes a user inputted string and uses a function that I created in order to print the string backwards. */ + +#include +#include + +void reversal (char userString[]) { + char *userStringStart = userString; + char *userStringEnd = userStringStart + strlen (userString) - 1; + int i; + for (i = 0; *userStringStart != *userStringEnd; i++) { + printf ("%c", *userStringEnd); + userStringEnd--; + } + printf ("%c\n", *userStringEnd); +} + + + +int main () +{ + printf ("Please type a string of letters\n"); + char userString [100]; + fgets (userString, sizeof(userString), stdin); + userString [strlen (userString) - 1] = '\0'; + reversal(userString); +} diff --git a/stringFuncPointers.c b/stringFuncPointers.c new file mode 100644 index 0000000..77004ad --- /dev/null +++ b/stringFuncPointers.c @@ -0,0 +1,73 @@ +/* Yael Kelmer. + write a program that implements two functions: strcat() and strcmp(). use pointers. write the main function to execute both of these functions on 2 strings. */ + +#include +#include + + +void stringCat (char string1[], char string2[]) { + int lengthString3 = strlen (string1) + strlen (string2); + char string3 [lengthString3]; + char *string3Ptr = string3; + char *string1Ptr = string1; + char *string2Ptr = string2; + int i; + for (i = 0; i < strlen (string1); i++) { + *string3Ptr = *string1Ptr; + string3Ptr++; + string1Ptr++; + } + for (i = 0; i < strlen (string2); i++) { + *string3Ptr = *string2Ptr; + string3Ptr++; + string2Ptr++; + } + *string3Ptr = '\0'; + printf("%s\n", string3); +} + +int stringCmp (char string1[], char string2[]) { + int shorterLength; + if (strlen (string1) < strlen (string2)) { + shorterLength = strlen (string1); + } + else { + shorterLength = strlen (string2); + } + char *string1Ptr = string1; + char *string2Ptr = string2; + int i; + for (i = 0; i < shorterLength; i++) { + if (*string1Ptr == *string2Ptr) { + string1Ptr++; + string2Ptr++; + } + else if (*string1Ptr < *string2Ptr) { + return 1; + } + else if (*string1Ptr > *string2Ptr) { + return -1; + } + } + if (strlen (string1) == strlen (string2)) { + return 0; + } + else if (strlen (string1) < strlen (string2)) { + return 1; + } + else if (strlen (string1) > strlen (string2)) { + return -1; + } +} + + + +int main() { + + char string1 [] = "hello"; + char string2 [] = "world"; + printf ("This is the concatenation of string1 and string2: "); + stringCat(string1, string2); + int comparison = stringCmp(string1, string2); + printf ("This is the comparison of string1 and string2: %d\n", comparison); +}