免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 3894 | 回复: 20
打印 上一主题 下一主题

语法错在哪儿了? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-26 18:02 |只看该作者 |倒序浏览
#include <stdio.h>

typedef struct node {
        int data;
        struct node *next;
        }linknode, *link;


void main()
{
        link a, b,n,h;
       
        h = (linknode *)malloc(sizeof(linknode));
        h->next = NULL;
        a=h;
               
135:        for(int i = 0; i < 5; i++)
136:        {
                n = (linknode *)malloc(sizeof(linknode));
                n->data = 1;
                n->next = NULL;
                a->next = n;
                a=a->next;
        }
        a=h->next;
       
        for(a=h->next;         a!=NULL; a=a->next)
        {
                printf("%d",a->data);
       
  }
       
}


》cl un.c 编译出错如下(我用的是vs2005的cl编译器)
un.c
un.c(135) : error C2143: syntax error : missing ';' before 'type'
un.c(135) : error C2143: syntax error : missing ';' before 'type'
un.c(135) : error C2143: syntax error : missing ')' before 'type'
un.c(135) : error C2143: syntax error : missing ';' before 'type'
un.c(135) : error C2065: 'i' : undeclared identifier
un.c(135) : warning C4552: '<' : operator has no effect; expected operator with
side-effect
un.c(135) : error C2059: syntax error : ')'
un.c(136) : error C2143: syntax error : missing ';' before '{'


写个for怎么错了呢?

论坛徽章:
0
2 [报告]
发表于 2008-06-26 18:04 |只看该作者
错得不知其然也~~

论坛徽章:
0
3 [报告]
发表于 2008-06-26 18:04 |只看该作者
猜测,i的定义写到外面去。

好久没碰C了,试试·

论坛徽章:
0
4 [报告]
发表于 2008-06-26 18:09 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2008-06-26 18:09 |只看该作者
typedef struct node *link;

typedef struct node {
        int data;
        struct node *next;
        }linknode;

试一下。

论坛徽章:
0
6 [报告]
发表于 2008-06-26 18:14 |只看该作者
原帖由 5毛党党员 于 2008-6-26 18:09 发表
typedef struct node *link;

typedef struct node {
        int data;
        struct node *next;
        }linknode;

试一下。



还是出错

论坛徽章:
0
7 [报告]
发表于 2008-06-26 18:15 |只看该作者
原帖由 jamesr 于 2008-6-26 18:09 发表
编译时的命令有没有加参数
-std=c99



加了也不行,还是报语法不对

论坛徽章:
0
8 [报告]
发表于 2008-06-26 18:41 |只看该作者
原帖由 benbenr 于 2008-6-26 18:04 发表
猜测,i的定义写到外面去。

好久没碰C了,试试·

正解。
用gcc编译  将for(int i=0..........)  改为:
int i;
for(i=0;...............)
就能顺利通过  并得出正确结果

论坛徽章:
0
9 [报告]
发表于 2008-06-26 18:42 |只看该作者
出错原因:for(int i =0; i < 5; i++)
这句中i的定义不可放在内部定义,要放在main的开头处,才可通过编译。

不知是否是vs2005编译器的关系?

谢谢各位了

论坛徽章:
0
10 [报告]
发表于 2008-06-26 18:45 |只看该作者
晕,是不是前面的135:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP