noooooooob
2013-10-13 04:13
采纳率: 100%
浏览 2.4k
已采纳

初学者问一个关于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]

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 风浪静 2013-10-14 04:55
    已采纳

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

    打赏 评论
  • 风浪静 2013-10-13 09:43

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

    打赏 评论
  • 韦轩 2013-12-16 10:59

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

    打赏 评论

相关推荐 更多相似问题