【发布时间】:2021-02-16 01:17:42
【问题描述】:
我想创建一个字符串数组,用户可以在其中定义数组中的项目。也就是说,我会要求用户输入数组的元素(使用scanf)。我还有一个打印该数组元素的函数。所以,我想将字符串数组传递给该函数。
我已尝试对此进行大量研究,但无法理解任何内容。我遇到了一个解决方案,我可以使用 char ** 将字符串数组传递给函数,但无法在运行时定义元素。
这是我遇到的解决方案。
#include <stdio.h>
#include <stdlib.h>
void print(char **, int size);
int main(){
char *stringArray[3];
stringArray[0] = "Word0";
stringArray[1] = "Word1";
stringArray[2] = "Word2";
print(stringArray, 3);
return 0;
}
void print(char **ptr, int size){
int i;
for(i=0; i<size; i++){
printf("%s\n", ptr[i]);
}
}
但我希望用户输入元素。像这样的东西,但这不起作用。 (为什么?)
#include <stdio.h>
#include <stdlib.h>
void print(char **, int size);
int main(){
char *stringArray[3];
for(int i=0; i<3; i++){
scanf("%s", stringArray[i]);
}
print(stringArray, 3);
return 0;
}
void print(char **ptr, int size){
int i;
for(i=0; i<size; i++){
printf("%s\n", ptr[i]);
}
}
指向指针char ** 的指针的概念对我来说是新的,我希望您向我解释这一点,就像您向一个完整的初学者解释这一点一样。
对此的任何帮助都将受到高度赞赏。提前谢谢你。
【问题讨论】:
标签: arrays c string pointers multidimensional-array