在指针数组中输入字符串

时间:2016-11-26 16:46:17

标签: c arrays string pointers arrayofstring

问题在于我实际上并不热衷于处理指针数组,我这样做,它传递到数组的位置,所以我总是在每个位置,最后输入。但是,如果我使用*运算符,它只传递第一个字符..所以我怎么做?

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 );

} 

1 个答案:

答案 0 :(得分:1)

您似乎对指针概念存在误解。

当你这样做时

const char *copy= 0;

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

你可以做到

char copy[100];

代替。这将为您提供存储字符串(少于100个字符)的内存。此外,您可以使用copy作为 - 如果它是调用函数时的指针。

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

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

// ... code

free(copy);  // Release memory