2012-06-13 38 views
-1


C中的输入文件双指针

我在我的代码中遇到了一些问题,我无法修复它。任何人都可以抓住mycode的缺陷吗?我想从输入文件中获取城市距离,并在地图上复制城市名称而不重复。我的问题是分段错误。输入文件由几行两个城市名称和它们之间的距离组成,我尝试获取城市名称并将它们复制到名为map的双指针。对不起,对不起英语

city1[0] = (char*)malloc(sizeof(char)*10);      
city2[0] = (char*)malloc(sizeof(char)*10); 
map[0] = (char*)malloc(sizeof(char)*10); 
map[1] = (char*) malloc(sizeof(char)*10); 
map[2] = (char*) malloc(sizeof(char)); 
map[2] = NULL; 
fscanf(data, "%s %s %d", city1[0], city2[0], &distance); 
strcpy(map[0],city1[0]); 
strcpy(map[1],city2[0]);     
j=2,i=1; 
while(fscanf(data, "%s %s %d",city1[i],city2[i], &distance)!=EOF){ 
    city1[i+1] = (char*)malloc(sizeof(char) *10); 
    city2[i+1] = (char*)malloc(sizeof(char)*10); 
    if(checker(map,city1[i])==1){ 
     map = realloc(map, sizeof(char*)*(j)); 
     map[j] = (char*) malloc(sizeof(char)); 
     strcpy(map[j], city1[i]); 
     map[j+1] = (char*) malloc(sizeof(char)); 
     map[j+1] != NULL; 
     j++; 
    } 
    if(checker(map,city2[i])==1){ 
     map = realloc(map, sizeof(char*)*(j)); 
     map[j] = (char*) malloc(sizeof(char)); 
     map[j+1] = (char*) malloc(sizeof(char)); 
     strcpy(map[j], city2[i]); 
     map[j+1] = NULL; j++; 
    } 
} 
+0

不要强制'malloc'的返回值:http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc – wap26

+0

“我在我的代码中遇到了一些问题”你会告诉我们问题是什么,或者让我们猜测? – cdarke

+0

当你去看医生时,你只是说“哎呀!”? – Jens

回答

0

显示您正在使用的变量的定义。

我想你对使用malloc()为字符串动态分配空间有一些误解。您正在为单个字符分配空间,并使用malloc()的多个呼叫。这似乎很困惑。

此外请尝试更清楚您的代码应该做什么。