Googled around and can't find out what's going wrong here, the pointer gets passed correctly but it's not working.
The program is supposed to find the length of the character array/string.
What's wrong here? Just always give length of zero!
#include <stdio.h>
#include <stdbool.h>
int stringlength(char *); // Declare function in the beggining (because C)
main()
{
char testString[100]; // Character array where we'll store input from command line (unsafely)
char *arrayPointer; // Pointer that will point to array so it can be passed to function
int length; // Integer for length of string
printf("Please enter in a string: \n");
scanf("s", &testString[0]); // Get input
arrayPointer = &testString[0]; // Point the pointer to the array
printf("Pointer to array %p\n-----------------\n", arrayPointer); // Output pointer
stringlength(arrayPointer); // And use the function
printf("Length is %d\n", length); // Output the length of the string...
}
stringlength(char *stringArray)
{
int i = 0; // Counter variable
int length = 0; // Length variable
bool done = false; // Boolean for loop
while(!done)
{
printf("Character is %c\n", stringArray[i]); // Output character
printf("Memory location %p\n", &stringArray[i]); // Output memory location of character
if(stringArray[i] == '\x00') // If the current array slot is a null byte we've reached the end of the array
{
done = true; // Null byte found, we're all done here
return length;
} else {
length++; // Not a null byte so increment length!
}
i++; // Counter for moving forward in array
}
}
Output of this is:
mandatory@MANDATORY:~/Programming/C$ ./a.out
Please enter in a string:
testing
Pointer to array 0x7fffc83b75b0
-----------------
Character is
Memory location 0x7fffc83b75b0
Character is
Memory location 0x7fffc83b75b1
Length is 0
scanf("s", &testString[0])probably doesn't do what you think it does.main() // but don't declare main correctly, because K&R Clength? The one you print, not the one local tostringlength? Or did you think they are the same for some reason?iandlengthdifferent? When isdoneever false and the loop exits? Thinking about those should lead to much simpler and easier to read code.