因为修改iptables策略时,需要把域名转换为16进制,就写了一个这样的小程序。本来用的for循环,可是并没按照所想的one by one转下去,试了下goto语句倒是可以。。。有知道原因的请告诉我,谢谢。

  1. #include <stdio.h> 
  2. #include <string.h> 
  3.  
  4. int 
  5. main(int argc, char **argv) 
  6.     char *a = NULL; 
  7.  
  8.     a = strtok(argv[1], "."); 
  9. loop: 
  10.     printf("%02x", strlen(a)); 
  11.     while(*a != '\0'
  12.         printf("%x", *a++); 
  13.  
  14.     a = strtok(NULL, "."); 
  15.     if(a != NULL) 
  16.         goto loop; 
  17.     printf("%02d\n", 0); 
  18.     return 0;