c语言 输入一个字符串,内含数字字符和非数字字符,如gs 423cd156 7896>? df12345,将其中连续的数字字符作为一个整数,依次存放到数组a中,例如,423放入a[0],156放入a[1],…。统计其共有多少个整数,并输出这些数。用指针实现。
时间: 2024-03-19 18:43:18 浏览: 61
C语言中把数字转换为字符串-sprintf
可以使用指针遍历字符串中的每个字符,当遇到数字字符时,利用指针从该字符开始,找到连续的数字字符,将其转换成整数并存放到数组中。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
int a[MAX_LEN], n = 0;
// 读入字符串
printf("请输入一个字符串:");
gets(str);
// 遍历字符串中的每个字符
char *p = str;
while (*p != '\0') {
// 如果是数字字符,找到连续的数字字符并转换成整数
if (*p >= '0' && *p <= '9') {
int num = 0;
while (*p >= '0' && *p <= '9') {
num = num * 10 + (*p - '0');
p++;
}
a[n++] = num;
}
else {
p++;
}
}
// 输出整数数组
printf("共有%d个整数:\n", n);
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
注意,这里使用了 gets 函数读入字符串,但它是不安全的,建议使用 fgets 函数代替。另外,为了简化代码,这里没有对数组 a 的大小进行判断,实际使用时应该注意避免数组越界。
阅读全文