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条)

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛