编程练习2——01从一个字符数组中读出相应的整数、实数例如qwe32.56dgh456ml9.4sad应该输出32.56 456 19.4

xiaoxiao2021-02-28  95

/******************************************    从一个字符数组中读出相应的整数、实数    例如qwe32.56dgh456ml9.4sad  应该输出    32.56 456 19.4 ******************************************/ #include <stdio.h> int ReadFloatInt(char *str, char (*outbuf)[10]) { if (str == NULL || outbuf == NULL) { return -1; } char *p = str; int i = 0; int j = 0, k = 0; int flag = 0; while (*p) { if (*p >= '0' && *p <= '9') //遍历字符串查找数字 { if (flag == 0) { j++; k = 0; outbuf[j][k] = *p; //将数字放入第一个实数的存放点 k++; flag = 1; } else if (*(p + 1) == '\0') { outbuf[j][k] = *p; //处理最后一个数字字符串 outbuf[j][k + 1] = '\0'; } else { outbuf[j][k] = *p; //将第j个实数放入二维数组 k++; } } else if (flag == 1) { if (*p == '.' && (*(p + 1) >= '0' && *(p + 1) <= '9')) //检查是否是实数,也就是检查小数点的位置 { outbuf[j][k] = '.'; k++; } else { outbuf[j][k] = '\0'; flag = 0; } } p++; } return j;   //实数的个数 } int main() { int i = 0;   //循环变量,输出二维数组 int len = 0;   //实数的个数 char str[100] = {0};  char outbuf[10][10] = {0}; //存放数字字符串 printf ("please input a string (with numbers): "); scanf ("%s", str); len = ReadFloatInt(str, outbuf); if (len == -1) { printf ("function intfloat error!\n"); return -1; } for (i = 1; i <= len; i++) { printf ("%s\n", outbuf[i]); //输出结果 } return 0; }
转载请注明原文地址: https://www.6miu.com/read-35826.html

最新回复(0)