C语言中,如何给将多组字符串赋给二维数组?.

比如输入4组字符串 sd sdf asdf asdfdf
然后a[0]="sd";
a[1]="sdf";
a[2]="asdf"
a[3]="asdfdf"
字符串长度不一定,几组字赋串也不一定.
如何实现!!
谢谢,急用.
huang2y1 回答的很好啊, 但是几组字符串也是不一定啊! 应该可以把指针数组设的很多,然后在循环里加条件退出循环吧!
使用ctrl+z的方法我也使了,但是最好最好是回车结束.
我需要在下面的程序中使用这个数组.

/*用多级指针,字符串长度不定;但多少组字符串要预定好*/

#include "stdio.h"

int main( void )
{
char *a[4]; /*设指针数组为4个,几组字符串在这定*/
char * *p; /*重指针*/
int i;
p = a;
for (i=0; i<4; i++)
{
scanf("%s", *(p+i));
}
for (i=0; i<4; i++)
{
printf("a[%d] = %s\n", i, *(p+i));
}
getch( );
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-23
#include <stdio.h>
main()
{
char a[1000][200];//1000组,长度200
int i,j; int len;
char c;
for(i=0;i<1000;++i)
{
j=0;
while((c=getchar())!='\n'&&c!=' ')
a[i][j++]=c;
if(c==' ') a[i][j]='\0';
else if(c=='\n') {a[i][j]='\0';break;}
}
len=i+1;
for(i=0;i<len;++i) printf("%s\n",a[i]);
}
/*空格作为分隔*/本回答被提问者采纳
第2个回答  推荐于2017-09-26
1.用一个循环语句就可以了。例如:

char *a[3]={"1","23","456"};
char b[10][10];

for(i=0;i<3;i++) strcpy(b[i],a[i]);

2.字符串和数组的关系:
字符串就是一个一维数组,它的每一个元素都是一个字符。
在c语言中字符串是以\0结尾的一串字符,如“abcd1234\0”。
字符串数组str[4]="abc\0"。\0是结束符。
字符串数组里的字符长度都为3 ,打印的时候只显示abc,\0不显示。

3.字符串的定义:
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。
第3个回答  2019-07-10
#include<stdio.h>
#define T 3
main()
{
int i,j,n=0;char a[10][100000];
printf("输入%d字个符串\n",T);//T<=10
for(i=0;i<T;i++)
gets(a[i]);
第4个回答  2007-08-18
#include <stdio.h>

void main()
{
char a[][20]={"sd","sdf","asdf","asdfdf"};
printf("%s\n%s\n%s\n%s",a[0],a[1],a[2],a[3]);
}