数据预处理-OD data

  1. 能够成功打开文件
  2. 尝试读取一个字符
    能够联系读取字符,一直到底。
ch=fgetc(fp);
while (ch!=EOF){
putchar(ch);
ch=fgetc(fp);
}
  1. try to write it.
while (ch != EOF)
    {
        putchar(ch);
        ch = fgetc(FRead);
        fputc(ch,FWrite);
    }

be able to write

  1. 用fscanf_s识别字符串的语法格式
    fscanf_s从文件中读取字符串是需要指定缓冲区的大小,即仅仅%10s是不够的,在s后面加参数说明s的大小,如下:fscanf_s([df,"%10s",s,11);
  2. 可以进行混合数据类型读取
char str[10];
    int i;
    fscanf_s(FRead, "%s\t%d\n", str,10,&i);
  1. 建立od struct并用od变量读取
  2. 16进制查看器
    winHex
  3. 读一个OD对
    fscanf_s(FRead, "%s\t%d\n", OriginStr,7,&OriginVal);
    printf("%s\t%d\n", OriginStr, OriginVal);
    int D = NoNodes;
    int od_i;
    for (od_i = 0; od_i < NoNodes; od_i++) {
        od[od_i].Ori = OriginVal;
        if (od_i%5 !=0) {
            fscanf_s(FRead, "\t%d\t:\t%lf;", &od[od_i].Des, &od[od_i].Dem);
            printf("%d\t%d\t%lf\n", od[od_i].Ori, od[od_i].Des, od[od_i].Dem);
        }
        else {
            fscanf_s(FRead, "\t%d\t:\t%lf;\n", &od[od_i].Des, &od[od_i].Dem);
            printf("%d\t%d\t%lf\n", od[od_i].Ori, od[od_i].Des, od[od_i].Dem);
        }
    }
  1. SixousFalls succeed.
  2. Anaheim 的格式与SixousFalls一致
    文件名
    Node数量
  3. Anaheim 把从o到o的dem删除了
  4. 每读一次就识别一下
  5. 给每个OD对先生产,Dem赋值为0,然后再对比,改。
  6. 找一个中间过渡变量。
  7. 发现用数组简单。改成数组。
  8. 只要读37次,成功。
  9. WinniPeg
  10. Origin 下没有数值的很少,可以手工剔除。
  11. 换行号16进制
    0a------换行符号------"\n"
    空格的[ASC]码是32,十六进制是 20,十进制是-16
  12. OD识别机制


    数据预处理-OD data_第1张图片
    OD识别机制
  13. 尾部只要识别到一个换行符就要交换。
  14. 强制类型转换
messeng_int = (int)(messenger - '0');
        printf("%c %d %d\n",messenger, messenger, messeng_int);
  1. Winnipeg succeed
  2. Chicago sketch
    文件就有2.89兆,堆栈溢出
    chicago sketch在12148行多了一个换行符,导致问题。59860
    succeed

你可能感兴趣的:(数据预处理-OD data)