c语言 有关字符串的问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 01:16:44
如果要输入一个不多于10个单词的英文句子(比如 I am a student)
并且把每个单词的长度分别放在数组中 该怎么写呢..
这样可以吗?
char danci[10][30];
int changdu[10],a,m;
gets(danci);
for(a=0;a<10;a++){
m=strlen(danci[a]);
if(m>0)
changdu[a]=m;
}
呃~~~~能具体解释下哪里错了……应该怎么使用么。。。?

ps 事先不知道那个句子里面有多少个单词呀~~

char danci[10][30];
gets(danci[10]);
这种写法对不对呢?

你要正确理解字符串数组,它不是二维数组。
程序改成下面就可以了:

#include"stdio.h"
#include"string.h"
void main()
{
char danci[10][30];
int changdu[10],a,m;
for(int i=0;i<10;i++)
gets(danci[i]);
for(a=0;a<10;a++)
{
m=strlen(danci[a]);
if(m>0)
changdu[a]=m;
}
for(a=0;a<10;a++)
printf("%d\n",changdu[a]);

}

输入输出如下:
sdfsda
ertrt
gfh
dfgd
jkh
wef
cvb
fgd
khjnm
cvb
6
5
3
4
3
3
3
3
5
3

你定义了10个字符数组,每个数组的大小为30
因为你不知道大小,这里你假设的是30。
数组必须定义的时候给出大小

你错就错在用gets(danci);
要用 gets(danci[i]);danci[i]是字符型的指针数组。
数组必须定义的时候给出大小 \

gets(danci[10])不对,
danci[10][30]定义了10个一维的字符数组,分别从danci[0]到danci[9]

//---------------------------------------------------------------------------