【问题标题】:Input file double pointers in C在C中输入文件双指针
【发布时间】:2012-06-13 12:23:34
【问题描述】:


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

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++;
    }
}

【问题讨论】:

  • 不要转换malloc的返回值:stackoverflow.com/questions/605845/…
  • “我的代码中有一些问题”你是要告诉我们问题是什么,还是让我们猜测?
  • 你去看医生的时候,你只是说“哎哟!”吗?
  • 请向我们提供 city1、city2 等的定义

标签: c file pointers file-io


【解决方案1】:

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

我认为您对使用malloc() 为字符串动态分配空间存在一些误解。您正在为单个字符分配空间,使用多次调用malloc()。这似乎很混乱。

另外,请尝试更清楚地了解您的代码应该做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-10
    • 2021-07-31
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多