strcmp的运用解决方法
strcmp的运用
if(strcmp(s,"0")==0)
{
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
}
我想实现字符数组s为0时,跳3行;不为0时,跳5行。
但是我感觉我这样编写是反过来了。
怎么办,要是不用strcmp,怎么实现
------解决思路----------------------
if(strcmp(s,"0")==0)
{
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
}
我想实现字符数组s为0时,跳3行;不为0时,跳5行。
但是我感觉我这样编写是反过来了。
怎么办,要是不用strcmp,怎么实现
------解决思路----------------------
//in.txt:
// 3, 6, 0,'1 ',2,2,1, 0.00000E+0, 0.00000E+0,2,'T3 ',1, 1,1.0000
// 0.00000E+0, 5.86000E-2, 100.00
//13.8000, 0.000, 0.000, 0.00, 0.00, 0.00, 0, 0, 1.10000, 0.90000, 1.10000, 0.90000, 33, 0, 0.00000, 0.00000, 0.000
//242.000, 0.000
//
// 415, 418, 416,'3#',2,3,2, 1.46400E+5, 2.30000E-3,1,'青浦-3# ',1, 252,1.0000
// 5.85500E+5, 1.31000E-1, 180.00, 5.40680E+5, 7.80000E-2, 180.00, 7.09880E+5, 2.30000E-1, 180.00,0.97739, 20.3138
//231.000, 230.000, 0.000, 180.00, 180.00, 180.00, 0, 0,236.5000,214.5000,253.0000,207.0000, 4, 0, 0.00000, 0.00000, 0.000
//115.000, 115.000, 0.000, 180.00, 180.00, 180.00, 0, 0,115.0000,115.0000,126.5000,103.5000, 4, 0, 0.00000, 0.00000, 0.000
//37.5000, 37.000, 0.000, 180.00, 180.00, 180.00, 0, 0,37.50000,37.50000,40.70000,33.30000, 4, 0, 0.00000, 0.00000, 0.000
//
//第一行第三个数为0,跳3行。不为0,判断第12个数为零跳5行,不为0,跳5行的同时,total加1
#include <stdio.h>
#include <string.h>
void get_field(char *src,int no,char **t) {
int i=0;
static char des[4096];
strcpy(des,src);
*t=strtok(des,",");
while (1) {
if (*t==NULL) break;
i++;
if (i==no) break;
*t=strtok(NULL,",");
}
}
int main() {
static char str[4096];
char *s,*s2;
FILE *fp,*ft;
int v,total=0;
fp=fopen("in.txt","r");
if (fp==NULL) return 1;
ft=fopen("out.txt","w");
if (ft==NULL) {fclose(fp);return 2;}
while (1) {
if (NULL==fgets( str, sizeof(str), fp )) break;
get_field(str, 3, &s );fprintf(ft,"%s\n", s );
get_field(str, 12, &s2 );fprintf(ft,"%s\n", s2 );
if (s && 1==sscanf(s,"%d",&v) && v==0) {
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
} else {
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
fgets( str, sizeof(str), fp );
if (s2 && 1==sscanf(s2,"%d",&v) && v!=0) total++;
}
}
fclose(fp);
fclose(ft);
printf("total==%d\n",total);
return 0;
}
//total==1
//
//out.txt:
// 0
//1
// 416
//1