程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 判斷輸入的字符串是否為ip地址

判斷輸入的字符串是否為ip地址

編輯:C++入門知識

首先給出一個c函數的原型:int sscanf(const char *buffer,const char *format,[argument ]...)它的返回值是參數的數據,也就是argument的個數,buffer:存儲的數據,format:格式控制字符串,argument:選擇性設定字符串。這個程序從標准流讀取數據,可以進行無限制的輸入。下面貼出代碼,然後引出另外一個問題,將字符串ip轉換成整形ip地址。
[cpp] 
#include<stdio.h> 
#include<string.h> 
int main(void) 

        char str[32]; 
        int a,b,c,d; 
        int ret=0; 
        while(fgets(str,sizeof(str),stdin)!=NULL) 
        { 
                int len=strlen(str); 
                str[len]='\0'; 
                ret=sscanf(str,"%d.%d.%d.%d",&a,&b,&c,&d); 
                if(ret==4&&(a>=0&&a<=255)&&(b>=0&&b<=255)&&(c>=0&&c<=255)&&(d>=0&&d<=255)) 
                { 
                        printf("it is ip!\n"); 
                } 
                else 
                        printf("it is not ip!\n"); 
        } 
        return 0; 

gcc -Wall ip.c -o ip
12.3.4.5
it is a ip!
下面來引出另外一個問題,在很多情況下,要求把字符串ip轉換成整形ip,這個問題也可以應用sscanf這個函數,首先把四個字段存儲到a,b,c,d四個變量當中去,然後進行移位運算,因為ip地址是32位的,而且是無符號整形變量,所以可以應用unsigned int 來存儲. unsinged int ip=(a<<24)+(b<<16)+(c<<8)+d。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved