初学者问一个关于c语言结构体的问题

结构体中指针和数组有什么不同?

我定义了这么一个结构体:
struct word
{
char*word1;
int line[1000];
};
struct word danci

然后用一个函数getword读取输入并给该结构体赋值,具体是怎么样就不写了
getword(danci,100);
然后
printf("%d",danci.line[0]);
但是这句报错了,原因是struct word danci没有初始化
但是我把结构体中int line[1000] 改为int*line再给line分配一个地址 则不会报错。
请问这是为什么????
以下是getword函数的代码:
int getword(struct word word,int lim)
{
int c,getch(void);
void ungetch(int);
char*w=word.word1;
static int nline=1;
while((c=getch())==' '||c=='\t')
;
if(c!=EOF)
*w++=c;
if(c=='\n')
++nline;
if(nline>MAXLINE)
{
printf("只能处理1000行以内的单词\n");
return EOF;
}
if(!isalpha(c))
{
*w='\0';
return c;
}
for(;--lim>0;w++)
if(!isalnum(*w=getch()))
{
*(word.line)=nline;
ungetch(*w);
break;
}
*w='\0';
return word.word1[0];
}
getword用来读取输入中的单词,将其赋给结构体struct word中的char*word1,把单词所在的行数赋给int line[0]

suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
6 年多之前 回复

3个回答

你的struct word结构中的word1成员只是char*类型,你想用它保存输入单词的话就要用malloc()分配一个内存块来存储你的单词,另外单词所在的行数赋给int line[0],那int line[1]到int line[999]你又空着干嘛。。还有我没见过函数声明写在另一个函数里面的

你的getword(danci,100);是什么意思,先解释下!

lym753024200
风浪静 你的struct word结构中的word1成员只是char*类型,你想用它保存输入单词的话就要用malloc()分配一个内存块来存储你的单词,另外单词所在的行数赋给int line[0],那int line[1]到int line[999]你又空着干嘛。。还有我没见过函数声明写在另一个函数里面的
6 年多之前 回复
swj6086085
noooooooob 代码我已经放上去了
6 年多之前 回复
swj6086085
noooooooob 这个函数用来读取输入中的单词,把单词赋值给char*word
6 年多之前 回复
swj6086085
noooooooob int getword(struct word ,int )有两个参数,参数1是一个结构体,参数2是这个结构体中char*word1的元素个数
6 年多之前 回复

函数的声明怎么在另一个函数里面?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐