グーグルで検索しても、ここで何が問題なのかわかりません。ポインターは正しく渡されますが、機能していません。
プログラムは、文字配列/文字列の長さを見つけることになっています。
ここで何が問題なのですか?常にゼロの長さを指定してください!
#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
}
}
これの出力は次のとおりです。
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