请写一段代码,可以将输入为”0.0.0.0”—“255.255.255.255”的字符串转换为int型整数数组。
输入:”255.255.255.255”
输出:255 255 255 255 (数组)
#include<stdio.h> #include<stdilib.h> #include<string.h> int main() { char arry[20]; int res[4]={0}; gets(arry); int len=strlen(arry); int i=0,count=0; while(i<len) { if(arry[i]=='.') { count++; i++; } res[count] *=10; res[count] +=(arry[i]-'0'); i++; } for(int j=0;j<4;j++) { printf("%d\t",res[j]); } }
上面几个回答没有保证0-255范围 int main() { char ip[] = "0.0.0.0"; int dec[4] = {0}; scanf("%s.%s.%s.%s", ip); sscanf(ip, "%d.%d.%d.%d", &dec[0], &dec[1], &dec[2], &dec[3]); if (dec[0] < 0 || dec[0] > 255 || dec[1] < 0 || dec[1] > 255 || dec[2] < 0 || dec[2] > 255 || dec[3] < 0 || dec[3] > 255) printf("error : should enter 0~255\n"); else printf("%d.%d.%d.%d", dec[0], dec[1], dec[2], dec[3]); return 0; }
#include <stdio.h> #include<stdlib.h> int main(){ char a; int b[4] = {0}; int i = 0; while ((a = getchar()) != '\n'){ if (a =='.'){ ++i; continue; } b[i] = b[i] * 10 + a - '0'; } printf("%d %d %d %d",b[0] b[1] b[2] b[3]); return 0; }
#include <stdio.h> // 时间:2020年7月24日08:30 // 测试题,输入255.255.255.255的字符串,输出255 255 255 255 的数组 char ipstr[16]; int result[4]; void ipstr2num(char *str); int main(void) { printf("请输入一个合法的IP地址\n"); scanf("%s", &ipstr); ipstr2num(ipstr); return 0; } void ipstr2num(char* str) { int j = 0; int num = 0; while(*str != '\0') { while((*str != '.') && (*str != '\0')) { num = num * 10 + *str - '0'; str += 1; } result[j] = num; num = 0; printf("%d\t",result[j]); if (*str == '\0') { break; } else { str += 1; j += 1; } } }
#include <stdio.h> (737)#include <stdlib.h> #include <string.h> int main() { int i,n,cnt,out[4]; char num[32]; while(scanf("%s",num) != EOF) { n = strlen(num); for(i=0,cnt=0; i<n; i++) { out[cnt++] = atoi(num+i); while(num[i] != '.' && num[i] != 0) i++; } for(i=0; i<4; i++) printf("%d ",out[i]); } return 0; }
#include <string.h> #include <stdio.h> int main() { char str[]="0.0.0.0~255.255.255.255"; char arr[]={0}; int new_arr[4]={0}; char* ret = NULL;//初始化ret strcpy(arr,str); for(ret=strtok(arr,'.');ret!=NULL;ret=strtok(NULL,'.')) { int i=0; switch(i) { case 0:new[i]=ret;break; case 1:new[i]=ret;break; case 2:new[i]=ret;break; case 3:new[i]=ret;break; } i++; } if (new[0] < 0 || new[0] > 255 || new[1] < 0 || new[1] > 255 || new[2] < 0 || new[2] > 255 || new[3] < 0 || new[3] > 255) printf("error : should enter 0~255\n"); else printf("%d.%d.%d.%d", new[0], new[1], new[2], new[3]); }
#include<stdio.h> (737)#include<stdlib.h> #include<string.h> (845)#define STLEN 20 void main(void) { char arry[STLEN]; int res[4]={0}; puts("Enter address"); fgets(arry,STLEN,stdin); int len = strlen(arry); int i = 0 ; int count = 0; while(i<len) { if(arry[i]=='.'||i==len-1) { count++; i++; } res[count]*=10; res[count]+=(arry[i]-'0'); i++; } for(int j=0;j<4;j++) { printf("%d\t",res[j]); } }
void Ip_str2int(const char* ip_str,int* ip_num) { int i = 0; int num_member = 0; int num_memberlen = 0; char ip_str_member[3] = {0}; int ip_str_member_len = 0; for(;i<strlen(ip_str);i++) { while(ip_str[i]!='.') { ip_str_member[ip_str_member_len] = ip_str[i]; ip_str_member_len++; i++; } for(i = 1;i<=ip_member_len;i++) { num_member += pow(10,num_memberlen - i)*(ip_member[i-1]-'0'); } ip_num[num_memberlen] = num_member; num_memberlen++; ip_str_member_len = 0; } }
#include <stdio.h> #include <stdlib.h> #include <string.h> // 定义一个函数,将字符串转换为整数数组 void str_to_int_array(char *str, int *arr, int size) { // 定义一个指针,用于分割字符串 char *token; // 定义一个变量,用于记录数组的索引 int index = 0; // 使用strtok函数,以"."为分隔符,分割字符串 token = strtok(str, "."); // 循环遍历分割后的字符串 while (token != NULL && index < size) { // 使用atoi函数,将字符串转换为整数,并存入数组中 arr[index] = atoi(token); // 更新索引 index++; // 继续分割字符串 token = strtok(NULL, "."); } } // 定义一个函数,打印整数数组 void print_int_array(int *arr, int size) { // 定义一个变量,用于循环遍历数组 int i; // 打印数组的开头符号 printf("["); // 循环遍历数组 for (i = 0; i < size; i++) { // 打印数组的元素 printf("%d", arr[i]); // 如果不是最后一个元素,打印逗号和空格 if (i < size - 1) { printf(" "); } } // 打印数组的结尾符号 printf("]\n"); } // 定义主函数 int main() { // 定义一个字符串,存储输入的IP地址 char str[16] = "255.255.255.255"; // 定义一个整数数组,存储转换后的结果 int arr[4]; // 调用函数,将字符串转换为整数数组 str_to_int_array(str, arr, 4); // 调用函数,打印整数数组 print_int_array(arr, 4); // 返回0,结束程序 return 0; }
#include<stdio.h> #include <stdlib.h> #include <string.h> int main(){ char ip[] = "255.255.255.255"; int addr[4] = {0}; int i = 0; char *token = strtok(ip,"."); while(token != NULL){ addr[i] = (atoi)token; i++; token = strtok(NULL,"."); } for(i = 0; i < 4; i++){ printf("%d",addr[i]); } }
/** * @file : ip_address.c * @author : KeeneChen * @date : 2023.08.11-19:13:31 * @details : ip_address */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char ip_address[] = "255.255.255.255"; int ip_array[4]; // 读取标准输入 scanf("%s", ip_address); // 方式一:***canf,第一个参数是字符串,第二个参数是格式化字符串,后面的参数是指针,类似的还有sprintf sscanf(ip_address, "%d.%d.%d.%d", &ip_array[0], &ip_array[1], &ip_array[2], &ip_array[3]); /** * 方式二:使用strtok,第一个参数是字符串,第二个参数是分隔符,返回值是分隔后的字符串 * 当第一个参数为NULL时,表示继续分隔上一次的字符串,直到返回NULL * atoi是将字符串转换为整数的函数 */ char* token = strtok(ip_address, "."); int i = 0; while (token != NULL) { ip_array[i++] = atoi(token); token = strtok(NULL, "."); } // 遍历数组 for (int i = 0; i < 4; i++) { printf("%d ", ip_array[i]); } printf("\n"); return 0; }