两个文件字符串小程序(CN_IPv4 extract)

来源:互联网 发布:imovie在mac上怎么导出 编辑:程序博客网 时间:2024/05/22 17:22

cn.c 用于将从APNIC给出的IP分配文件中将CN|ipv4字段取出来~

#include <stdio.h>#include <string.h> #define MAXLINE 100 int main(){    char readline[MAXLINE];    char readlinecopy[MAXLINE];    char *p;    FILE *fpread, *fpwrite;    int i;      fpread = fopen("APNIC.txt", "r");    fpwrite = fopen("CN.txt", "w");    while(fgets(readline, MAXLINE, fpread) != NULL && readline[0]                               != '\n'){        strcpy(readlinecopy, readline);        printf("readline = %s\n", readline);        p = strtok(readline, "|");        i = 0;        while(p != NULL){            printf("%s\n", p);            if(i==0 && strcmp(p, "apnic") == 0){                i++;               //  continue;            }            if(i==1 && strcmp(p, "CN") == 0){                i++;            //  continue;            }            if(i==2 && strcmp(p, "ipv4") == 0){                i++;                printf("****write readline ****\n");                printf("%s \n", readline);                fputs(readlinecopy, fpwrite);            //  continue;            }            p = strtok(NULL, "|");        }    }    fclose(fpread);    fclose(fpwrite);    return 0;}

cnip.c 用于将取出的CN|ipv4字段里面的源IP和长度拎出来~

#include <stdlib.h>#include <stdio.h>#include <string.h> #define MAXLINE 100 int main(){    char readline[MAXLINE];    char writeline[MAXLINE];    char *p;    FILE *fpread, *fpwrite;    int i;     int mask;    unsigned int totalmask;     fpread = fopen("CN.txt", "r");    fpwrite = fopen("CNIP.txt", "w");    while(fgets(readline, MAXLINE, fpread) != NULL && readline[0]                               != '\n'){//      strcpy(readlinecopy, readline);        memset(writeline, 0, MAXLINE);        printf("readline = %s\n", readline);        p = strtok(readline, "|");        i = 0;        while(p != NULL){            printf("%s\n", p);            i++;            if(i==4){                strcat(writeline, p);                strcat(writeline, "|");                    //  continue;            }            if(i==5){                strcat(writeline, p);                mask = atoi(p);                totalmask += mask;                fputs(writeline, fpwrite);                putc('\n', fpwrite);            //  continue;            }            p = strtok(NULL, "|");        }    }    printf("totalmask = %u\n", totalmask);    fclose(fpread);    fclose(fpwrite);    return 0;}

  

其实这主要是用来test一下有关string.h相关函数的,小结一下

strtok(*sentense, *cutchar)—— 用于使用分割符cutchar将sentense切分开来;

strcpy(*dst, *src)——用于把src的字符串内容复制到dst字符串中;

strcat(*sentense, *string)——用于向sentense末尾添加string字符串;

atoi(*string)——库<stdlib.h>中的函数(array to integer),用于将字符串格式的数字转化成int格式;

另外最重要的就是memset(*string, 0, sizeofstring)——用于字符串string的内容赋值,一般用来清零(类似的还有bzero())。

其中APNIC.txt 就是从这里copy下来的就OK了,其实上一篇有提过。这两个小程序跑下来统计国内ipv4总量为334512372。

就这些吧~
原创粉丝点击