简单开辟双重空间 什么文件看看速度
/*
* File: main.c
* Author: chujiangke
*
* Created on 2013年4月2日, 下午8:48
*/
#include<stdio.h>
#include<stdlib.h>
struct Node
{
char eng[11];
char foreign[11];
struct Node * next;
} ;
struct Hash_Table
{
struct Node* value[65000];
} ;
int main()
{
struct Hash_Table * hush=(struct Hash_Table*)malloc(sizeof(struct Hash_Table));
int i;
for(i=0;i<65000;i++)
{
(* hush).value[i]=(Node*)malloc(sizeof( Node));
scanf("%s",(*hush).value[i]->eng);
scanf("%s",(*hush).value[i]->foreign);
}
return 0;
}
[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
struct Node
{
char eng[11];
char foreign[11];
struct Node * next;
} ;
struct Hash_Table
{
int len;
struct Node* value[65000];
} ;
int main()
{
struct Hash_Table * hush=(struct Hash_Table*)malloc(sizeof(struct Hash_Table));
hush->len = 0;
int i;
char *str;
int count;
int num;
while (fgets(str, 11, stdin) != NULL) {
hush->value[i]=(struct Node*)malloc(sizeof(struct Node));
num = (strlen(str)-1)>11 ? 11 : (strlen(str)-1);
strncpy(hush->value[i]->eng, str, num);
strncpy(hush->value[i]->foreign, str, num);
hush->value[i]->eng[num] = '\0';
hush->value[i]->foreign[num] = '\0';
hush->len++;
/*printf("len is %d\n", hush->len);*/
/*printf("str is %s", hush->value[i]->eng);*/
/*printf("str is %s", hush->value[i]->foreign);*/
i++;
}
for(i=0;i<hush->len;i++) {
printf("value is %s\n", hush->value[i]->eng);
printf("value is %s\n", hush->value[i]->foreign);
}
return 0;
}