noooooooob 2013-10-13 04:13 采纳率: 0%
浏览 2407
已采纳

初学者问一个关于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]你又空着干嘛。。还有我没见过函数声明写在另一个函数里面的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 adb连接不到手机是怎么回事?
  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目