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