c - 在指针数组中输入字符串

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

} 

最佳答案

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

当你这样做时

const char *copy= 0;

你只得到一个指针。你没有任何内存来保存字符串。

你可以做到

char copy[100];

相反。这将为您提供保存字符串(少于 100 个字符)的内存。此外,您可以在调用函数时使用copy,就好像它是一个指针一样。

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

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

// ... code

free(copy);  // Release memory

关于c - 在指针数组中输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40820636/

相关文章:

C:将字符串传递给函数时错误预期为 ')'

c - 在这里,我试图填充 StudentList,它是一个数组。目前我只显示了 2 个学生,但出现段错误

c++ - 有什么方法可以检测指针是否指向数组?

javascript - 获取一周中的所有天数

java - Java中将多次出现的一个字符替换为不同的字符

c - 在C中,具有相同内容的字符串总是存储在相同的内存中?

在 C 特殊情况下组合 2 个数组

javascript - 从数组中获取唯一的随机项

MySQL:检查子串序列

java - String 是关于 switch 的数字类型并且总是编译为 lookupswitch 吗?