0

グーグルで検索しても、ここで何が問題なのかわかりません。ポインターは正しく渡されますが、機能していません。

プログラムは、文字配列/文字列の長さを見つけることになっています。

ここで何が問題なのですか?常にゼロの長さを指定してください!

#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
4

2 に答える 2

2

私はあなたが欲しいと思います

    scanf("s", &testString[0]); // Get input

することが

    scanf("%s", &testString[0]); // Get input
于 2013-05-14T19:02:49.103 に答える