#include <stdio.h>
int main()
{
// 变量声明
char str[50], *pstr;
int i, j, k, m, e10, digit, ndigit, a[10], *pa;
// 用户输入字符串
printf("input a string:\n");
gets(str);
// 指针初始化
pstr = &str[0];
pa = &a[0];
ndigit = 0;
i = 0;
j = 0;
// 通过循环遍历输入的字符串
while (*(pstr + i) != '\0')
{
// 如果字符是数字
if ((*(pstr + i) >= '0') && (*(pstr + i) <= '9'))
j++; // j 记录数字的位数
else
{
// 如果 j 大于 0,说明之前有数字
if (j > 0)
{
// 提取数字并存储到数组 a 中
digit = *(pstr + i - 1) - 48;
k = 1;
while (k < j)
{
e10 = 1;
for (m = 1; m <= k; m++)
e10 = e10 * 10;
digit = digit + (*(pstr + i - 1 - k) - 48) * e10;
k++;
}
*pa = digit;
ndigit++;
pa++;
j = 0;
}
}
i++;
}
// 处理字符串末尾的数字
if (j > 0)
{
digit = *(pstr + i - 1) - 48;
k = 1;
while (k < j)
{
e10 = 1;
for (m = 1; m <= k; m++)
e10 = e10 * 10;
digit = digit + (*(pstr + i - 1 - k) - 48) * e10;
k++;
}
*pa = digit;
ndigit++;
j = 0;
}
// 输出提取到的数字及其数量
printf("There are %d numbers in this line, they are:\n", ndigit);
j = 0;
pa = &a[0];
for (j = 0; j < ndigit; j++)
printf("%d ", *(pa + j));
printf("\n");
return 0;
}
23.12.6 提取字符串中的数字并存进数组
最新推荐文章于 2024-06-12 23:40:32 发布