- 论坛徽章:
- 0
|
我弄好了,有点乱。咋发个贴变成争论了呀。
while(fgets(line,LINE_MAX,fp)!=NULL)
{
//获取字符串长度
for(i=0;line[i]!=NULL;i++);
ti=i;
//找到行中的','
for(i=0;line[i]!=NULL&&line[i]!=0x2c;i++);
if(i==ti) continue; //一行中没有','的不处理
// 一行中只有一个数的去除,也就是一行中没有“,”符号的行是不用的行。
//printf("%d %s",k,line);
// 分离出每行中的数字
p=(char*)line;
for(;*p!='\0'&&*p==' ';p++); //去除前面的空格
for(;*p!='\0'&&*p=='\t';p++); //去除前面的TAB
dTab_ct=0;
err=0;
memset(dTab,0,sizeof(dTab));
if((48>*p>57)&&(48>*(p+1)>57)) //如果 line[0]的值不是'0'-'9'
{
printf("\nError: %s",line);
continue;
}else
{
dTab[dTab_ct][0]=*p-48; //char 字符转成int整数
dTab[dTab_ct][1]=*(p+1)-48;
dTab_ct++;
}
for(i=0;*(p+i)!='\0';i++); //字符串长度
pp=(char *)(p+i);
err=0;
for(;*p!='\0';p++)
{
if(*p==','&&((p+2)<=pp))
{
if((48>*(p+1)>57)&&(48>*(p+2)>57))
{
err=1;
break;
}else
{
dTab[dTab_ct][0]=*(p+1)-48;
dTab[dTab_ct][1]=*(p+2)-48;
dTab_ct++;
}
}
}
if(err){printf("\nError %s",line);continue;}
iTemp=0;
i1=0;
i2=0;
for(i=0;i<dTab_ct;i++)
{
// dTab 里就是需要处理的D中的座标
iTemp= d[dTab[i][0]][dTab[i][1]]+iTemp;
i1=d[dTab[i][0]+1][dTab[i][1]]+i1;
i2=d[dTab[i][0]+2][dTab[i][1]]+i2;
//printf("%x%x ",dTab[i][0],dTab[i][1]);
}
i1=i1%10;
i2=i2%10;
iTemp=iTemp%10;
for(i=0;i<d_ct;i++)
{
d_buf[i][0]='*';
d_buf[i][1]='*';
d_buf[i][2]='*';
d_buf[i][3]='*';
}
if(d[0][0]==i1&&d[1][0]==i2)
{
for(i=0;i<dTab_ct;i++)
{
d_buf[dTab[i][0]][dTab[i][1]] = d[dTab[i][0]][dTab[i][1]]+48;
}
i=d_ct;
while(i)
{
i--;
//printf("\n%c %c %c %c",d_buf[i][0],d_buf[i][1],d_buf[i][2],d_buf[i][3]);
printf("\n%d %d %d %d",d[i][0],d[i][1],d[i][2],d[i][3]);
}
printf("\n%s",line);
printf("\nx=%d,%d=%d,%d=%d",iTemp,d[0][0],i1,d[1][0],i2);
}
//printf("\n");
k++;
} |
|