如何一次输入二维字符串的所有元素?
How to take input for all the elements of a 2d string at one shot?
我想将数据存储在二维字符串中。传统的方式是:
char arr[20][20];
int i;
int size;
scanf("%d",&size);
for(i=0;i<size;i++)
scanf("%s", arr[i]);
这样我会输入:
Hey
I
Am
New
Here
我想输入:嘿,我是新来的
数组应该有:a[20][20]={"Hey","I","am","new","here"}
最优雅的实现方式是,
这样,你有很多好处,比如
- 如果完全使用固定大小的数组,您可以解决
size
的单独用户输入问题。您只能继续标记整个输入,直到数组元素出现为止。
- 执行输入值的有效性检查(可能使用
strlen()
)
- 您可以灵活地不使用预先确定大小的数组并使用动态内存分配,您可以根据数量(和输入的大小),(如果需要)。
对于 scanf()
无论您使用 '\n'(键盘输入)还是空格来分隔输入都没有关系,它的工作方式相同 way.The 标准定义的是任何空格都可以单独的 ino
也就是说,如果您将输入作为-
Hey
I
Am
New
Here
或-
Hey I am new here
它将始终将它们存储为 {"Hey","I","am","new","here"}
我想将数据存储在二维字符串中。传统的方式是:
char arr[20][20];
int i;
int size;
scanf("%d",&size);
for(i=0;i<size;i++)
scanf("%s", arr[i]);
这样我会输入:
Hey
I
Am
New
Here
我想输入:嘿,我是新来的
数组应该有:a[20][20]={"Hey","I","am","new","here"}
最优雅的实现方式是,
这样,你有很多好处,比如
- 如果完全使用固定大小的数组,您可以解决
size
的单独用户输入问题。您只能继续标记整个输入,直到数组元素出现为止。 - 执行输入值的有效性检查(可能使用
strlen()
) - 您可以灵活地不使用预先确定大小的数组并使用动态内存分配,您可以根据数量(和输入的大小),(如果需要)。
对于 scanf()
无论您使用 '\n'(键盘输入)还是空格来分隔输入都没有关系,它的工作方式相同 way.The 标准定义的是任何空格都可以单独的 ino
也就是说,如果您将输入作为-
Hey
I
Am
New
Here
或-
Hey I am new here
它将始终将它们存储为 {"Hey","I","am","new","here"}