- 能够成功打开文件
- 尝试读取一个字符
能够联系读取字符,一直到底。
ch=fgetc(fp);
while (ch!=EOF){
putchar(ch);
ch=fgetc(fp);
}
- try to write it.
while (ch != EOF)
{
putchar(ch);
ch = fgetc(FRead);
fputc(ch,FWrite);
}
be able to write
- 用fscanf_s识别字符串的语法格式
fscanf_s从文件中读取字符串是需要指定缓冲区的大小,即仅仅%10s是不够的,在s后面加参数说明s的大小,如下:fscanf_s([df,"%10s",s,11);
- 可以进行混合数据类型读取
char str[10];
int i;
fscanf_s(FRead, "%s\t%d\n", str,10,&i);
- 建立od struct并用od变量读取
- 16进制查看器
winHex - 读一个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);
}
}
- SixousFalls succeed.
- Anaheim 的格式与SixousFalls一致
文件名
Node数量 - Anaheim 把从o到o的dem删除了
- 每读一次就识别一下
- 给每个OD对先生产,Dem赋值为0,然后再对比,改。
- 找一个中间过渡变量。
- 发现用数组简单。改成数组。
- 只要读37次,成功。
- WinniPeg
- Origin 下没有数值的很少,可以手工剔除。
- 换行号16进制
0a------换行符号------"\n"
空格的[ASC]码是32,十六进制是 20,十进制是-16 -
OD识别机制
- 尾部只要识别到一个换行符就要交换。
- 强制类型转换
messeng_int = (int)(messenger - '0');
printf("%c %d %d\n",messenger, messenger, messeng_int);
- Winnipeg succeed
- Chicago sketch
文件就有2.89兆,堆栈溢出
chicago sketch在12148行多了一个换行符,导致问题。59860
succeed