c语言编写程序,实现从用户输入的长度不超过20的字符串中提取连续数字子串的功能,例如用户从键盘输入12abc345def67,输出12 345 67。 【要求:1)定义一个函数void getStr(char str[]) 接受用户的输入字符串,当超过20或用户输入回车时终止输入。2)定义一个函数void splitStr(char str[]) 从用户输入的字符串str中提取数字子串,暂存并输出。3)可用库函数isdigit(char)判断是否是数字字符,头文件<ctype.h> 】
时间: 2024-03-25 08:37:19 浏览: 64
好的,可以使用如下的C程序实现:
```c
#include <stdio.h>
#include <ctype.h>
void getStr(char str[]);
void splitStr(char str[]);
int main() {
char str[21];
getStr(str);
splitStr(str);
return 0;
}
void getStr(char str[]) {
int i = 0;
printf("请输入一个长度不超过20的字符串:");
while (i < 20 && (str[i] = getchar()) != '\n') {
i++;
}
str[i] = '\0'; // 字符串以'\0'结尾
}
void splitStr(char str[]) {
printf("连续数字子串有:");
for (int i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) {
putchar(str[i]); // 输出数字字符
} else if (i > 0 && isdigit(str[i - 1])) {
putchar(' '); // 数字子串结束,输出空格
}
}
}
```
这个程序定义了两个函数:`getStr` 函数用于从键盘读入用户输入的字符串,`splitStr` 函数用于提取字符串中的数字子串并输出。其中,`getStr` 函数通过循环调用 `getchar` 函数读入用户输入的字符,当读入的字符是回车或长度达到20时停止读入,并在字符串最后添加一个空字符 '\0'。`splitStr` 函数遍历字符串的每个字符,如果是数字字符,就输出它;如果不是数字字符,但它的前一个字符是数字字符,就输出一个空格,表示数字子串结束。运行程序,输入"12abc345def67",输出"12 345 67"。
阅读全文