NO

Author Topic: error #2001: Syntax error: expected ';' but found '{'.  (Read 14652 times)

lonwon

  • Guest
error #2001: Syntax error: expected ';' but found '{'.
« on: September 25, 2010, 04:31:25 AM »
Hello~
I'm doing my homework of Data Structure.I encounter a problem.
Code: [Select]
#include "stdlib.h"
#include "stdio.h"
#define ElemType int
#define Status int
#define OVERFLOW -2
#define OK 1
#define ERROR 0
//- - - - - 线性表的动态分配顺序存储结构 - - - - -
#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList *L){ //构造一个空的线性表L。
L->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L->elem)exit(OVERFLOW);
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return OK;
}//InitList_Sq
Status ListInsert_Sq(SqList *L,int i,ElemType e){ //在顺序线性表L中第i个位置之前插入新的元素e,
//i的合法值为1≤i≤ListLenth_Sq(L) +1
if ( i < 1 || i > L->length + 1 ) return ERROR;    //i值不合法
if ( L->length >= L->listsize){        //当前存储空间已满,增加分配
ElemType* newbase = (ElemType *)realloc(L->elem,(L->listsize + LISTINCREMENT) *sizeof (ElemType));
if ( ! newbase)exit(OVERFLOW);    //存储分配失败
L->elem = newbase;                          //新基址
L->listsize += LISTINCREMENT;       //增加存储容量
}
ElemType* q = & (L->elem[i - 1]);    //q为插入位置
ElemType *p;  //另外的变量p声明
for (p = &(L->elem[L->length - 1]) ; p >= q ; --p)  *(p + 1) = *p;    //插入位置之后的元素右移
*q = e;     //插入e
++L->length;    //表长增1
return OK;
}//ListInsert_Sq
Status ListDelete_Sq(SqList *L,int i, ElemType *e){ //在顺序线性表L中删除第i个元素,并用e返回其值
//i的合法值为1≤i≤ListLength_Sq(L)
ElemType *p;  //另外的变量p声明
if (( i < 1 ) || ( i > L->length)) return ERROR;     //i值不合法
p = & (L->elem[i - 1]);    ///p为被删除元素的位置
*e = *p;   //被删除元素的值赋给e
ElemType *q;  //另外的变量q声明
q = L->elem + L->length - 1;    //表尾元素的位置
for ( ++p;p <= q; ++p) * (p -1) = *p;    //被删除元素之后的元素左移
- -L->length; //表长减1
return OK;
}//ListDelete_Sq
int LocateElem_Sq(SqList L, ElemType e,
Status ( *compare)(ElemType, ElemType)){ //在顺序线性表L中查找第1个值与e满足compare()的元素的位序
//若找到,则返回其在L中的位序,否则返回0
int i;  //另外的变量i声明
i = 1; //i的初值为第1个元素的位序
ElemType *p;  //另外的变量p声明
p = L.elem; //p的初值为第1个元素的存储位置
while ( i <= L.length && ! ( * compare)( * p++ ,e)) ++i;
if ( i <= L.length ) return i;
else return 0;
}//LocateElem_Sq
void MergeList_Sq(SqList La, SqList Lb, SqList *Lc){
//已知顺序线性表La和Lb的元素按值非递减排列
//归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列
ElemType *pa,*pb,*pc,*pa_last,*pb_last;
pa = La.elem; pb = Lb.elem;
Lc->listsize = Lc->length = La.length + Lb.length;
pc = Lc->elem = (ElemType *)malloc(Lc->listsize*sizeof(ElemType));
if (!Lc->elem) exit (OVERFLOW); //存储分配失败
pa_last = La.elem + La.length - 1;
pb_last = Lb.elem + Lb.length - 1;
while(pa <= pa_last && pb <= pb_last){ //归并
if ( * pa <= *pb) *pc++= *pa++;
else *pc++= *pb++;
}
while(pa <= pa_last) *pc++ = *pa++; //插入La的剩余元素
while(pb <= pb_last) *pc++ = *pb++; //插入Lb的剩余元素
}//MergeList_Sq

int main () {

return OK;
}
Just ignore the Chinese characters in the notes above. All because I'm a Chinese.^_^
The error code : E:\C# 相关\Project01\main.c(81): error #2001: Syntax error: expected ';' but found '{'.
How do I correct my code to compile successfully?
PS:forgive my poor English -_-|||
Thanks.

Offline Stefan Pendl

  • Global Moderator
  • Member
  • *****
  • Posts: 582
    • Homepage
Re: error #2001: Syntax error: expected ';' but found '{'.
« Reply #1 on: September 25, 2010, 08:36:35 AM »
Code: [Select]
}//MergeList_Sq
The above line does not start with a curly brace, but a character looking similar.
---
Stefan

Proud member of the UltraDefrag Development Team

lonwon

  • Guest
Re: error #2001: Syntax error: expected ';' but found '{'.
« Reply #2 on: September 26, 2010, 02:17:33 AM »
Code: [Select]
}//MergeList_Sq
The above line does not start with a curly brace, but a character looking similar.


Hi,Stefan.
Thanks a lot!Due to my Chinese input method,I replaced the curly brace with some full-width character mistakenly.
How silly I am!Next time I would try to make more technical mistake.^_^
I have one more question:When I corrected my code and built the project,I met another error(fatal one,but I didn't note it down,probably one *.lib file is missing).Then I tried to build a new project and built once again in the "Program Files" folder but this time I didn'n met the error mentioned above.Does the project created by the Pelles C must be placed in the "Program Files" folder?

Offline Stefan Pendl

  • Global Moderator
  • Member
  • *****
  • Posts: 582
    • Homepage
Re: error #2001: Syntax error: expected ';' but found '{'.
« Reply #3 on: September 26, 2010, 09:00:10 AM »
I did not catch the curly brace at first too, but after removing all the comments, I noticed, that it was colored black instead of blue.



It is even a bad idea to put it there, you will have to navigate to the root folder of your projects, when you create a project.
This root folder will be used from now on.
There is a recent thread about this posted within this week.
---
Stefan

Proud member of the UltraDefrag Development Team