간이 메모리 데이터베이스 (5) CREATE

2255 단어 데이터 구조FP
다음은 한 줄 로 column 을 읽 겠 습 니 다.
 
column 이 여러 개 있 기 때문에 순환 문 구 를 써 야 합 니 다 while (...)
순환 문장의 끝 조건 은 무엇 입 니까? 언제 까지 column 을 읽 으 면 다 읽 는 것 입 니까?
당연히 파일 이 끝나 거나 ')' 까지 읽 어야 지.
그래서 저희 가 처음에 이렇게 쓸 수 있어 요.
	fscanf(fp,"%s",buffer);
	while (!feof(fp) && strcmp(buffer,")")) {

 while 순환 에서 column 을 읽 을 때마다 column 대상 을 만 듭 니 다.채 워 주세요.
그리고 column 구 조 를 디자인 할 때 저 는 링크 구 조 를 사용 합 니 다.그래서 만 들 때마다 column 대상 을 연결 해 야 합 니 다.
 
	//      column  
	Column * current = NULL;
	fscanf(fp,"%s",buffer);
	while (!feof(fp) && strcmp(buffer,")"))
	{
		//         column  
		Column * column = (Column *)malloc(sizeof(Column));
		//  column
		memset(column, 0, sizeof(Column));

		//  column     ,         1)       2)       3)          
		if (t.columns == NULL) t.columns = column;
		if (current!=NULL) current->next = column;
		current = current->next;


 링크 구조의 생 성 은 반드시 기억 해 야 합 니 다!1) 체인 헤드 유지 2) 체인 시 계 를 연결한다 3) 현재 포인터 하나 뒤로 이동
 
됐어.지금까지 CREATE 의 가장 복잡 한 부분 이 실 현 된 이후이제 우 리 는 홀가분 해 졌 다.내용 을 하나씩 읽 고 새로 만 든 column 에 저장 하면 됩 니 다.
 
		t.columnCount++;

		//         column name
		strcpy(column->name, buffer);

		//         column type(column length)
		fscanf(fp,"%s",buffer);
		getColumnTypeLength(buffer, &column->type, &column->length)==0; 


		//       NULL;     ;            

		fscanf(fp,"%s",buffer);
		if (strcmp(buffer,";")==0 || strcmp(strupr(buffer),"null;")==0)
			column->allowNull = 1;
		//         NOT,       
		else if (stricmp(buffer,"not")==0)
		{
			//        null;
			fscanf(fp,"%s",buffer);
			if (stricmp(buffer,"null;")) return 0; 
			column->allowNull = 0;
		}
 

 이렇게 column 하나 면 다 된 거 야.계속 아래로 읽 고 순환 을 완성 하 세 요.
		//             
		fscanf(fp,"%s",buffer);
	}
	return 1;

좋은 웹페이지 즐겨찾기