如何一次性获取2d字符串的所有元素的输入?

Pet*_*uke 0 c arrays string user-input multidimensional-array

我想将数据存储在2d字符串中.传统方式是:

char arr[20][20];
int i;
int size;
scanf("%d",&size);
for(i=0;i<size;i++)
 scanf("%s", arr[i]);
Run Code Online (Sandbox Code Playgroud)

这样我会输入:

Hey
I 
Am
New
Here
Run Code Online (Sandbox Code Playgroud)

我希望输入为:嘿,我是新来的,数组应该有: a[20][20]={"Hey","I","am","new","here"}

Sou*_*osh 5

实现这一目标的最优雅方式是,

  1. 使用读取输入fgets().
  2. 使用Tokenize strtok()
  3. 在有效性检查后,将令牌存储在数组元素中.

这样,你就有很多优点,比如

  • 如果完全使用固定大小的数组,您可以摆脱单独的用户输入的问题size.您只能继续对整个输入进行标记,直到数组元素存在.
  • 执行输入值的有效性检查(strlen()可能使用)
  • 您可以灵活地使用没有预定大小的数组并使用动态内存分配,您可以根据输入的数量(和大小)分配和调整数组大小(如果需要).