-1

问题是我实际上并不知道如何处理指针数组,我这样做的方式是将地址传递给数组的位置,所以我总是在每个位置,最后一个输入。但是如果我使用 * 运算符,它只会传递第一个字符.. 那我该怎么做呢?

int main( void ) {

    void prompt_str( const char *str[], char *const copy ); //prototype

    const char *str[ 20 ]= { '\0' };
    const char *copy= 0;

    //prompt stringa
    prompt_str( str, &copy );

} //end main

void prompt_str( const char *str[], char *const copy ) { //definition

    size_t n_str= 0, i= 0;

    do {
        printf( "Insert a string\n:" );
        fgets( copy, 100, stdin );
        i= ( strlen( copy )- 1 ); //get length
        copy[ i ]= '\0'; //remove \n

        str[ n_str++ ]= copy; //put string into pointer of array

    } while ( n_str< 3 );

} 
4

1 回答 1

1

您似乎对指针概念有误解。

当你这样做

const char *copy= 0;

你只会得到一个pointer. 你没有任何记忆来保存一个字符串。

你可以做

char copy[100];

反而。这将为您提供保存字符串(少于 100 个字符)的内存。此外,您可以copy在调用函数时将其当作指针使用。

或者,您可以使用动态内存,例如:

char* copy = malloc(100 * sizeof(char));  // Allocate memory

// ... code

free(copy);  // Release memory
于 2016-11-26T17:13:26.693 回答