用户输入一个字符串其中有空格,输出字符串中所有的数字。(用字符串解决)c语言
时间: 2024-10-20 12:12:29 浏览: 30
在C语言中,可以使用`for`循环和字符数组配合条件判断来提取字符串中的所有数字。以下是一个简单的示例:
```c
#include <stdio.h>
#include <ctype.h> // 包含处理字符类型的功能
void extract_digits(const char *str) {
int num = 0; // 存储当前找到的数字
char current_char;
printf("原始字符串中的数字有:\n");
while ((current_char = *str++) != '\0') { // 遍历字符串,直到遇到结束符'\0'
if (isdigit(current_char)) { // 判断字符是否是数字
printf("%d", current_char - '0'); // 输出数字(减去'0'得到十进制值)
num = current_char - '0'; // 更新num变量
}
}
}
int main() {
const char *input_str = "Hello 123 World! 456";
extract_digits(input_str);
return 0;
}
```
这个程序会打印出字符串 `input_str` 中的所有数字:123 和 456。
相关问题
输入一个字符串,输出字符串中所有的数字,其中并不是识别到空格算结束。(用字符串解决)C语言
在C语言中,如果你想要从字符串中提取所有的连续数字字符而不仅仅是整数,可以遍历字符串,并通过检查每个字符是否为数字来实现。这里是一个简单的示例:
```c
#include <stdio.h>
#include <ctype.h> // 包含用于检查字符类型的头文件
void extract_digits(const char *str) {
while (*str != '\0') { // 当遇到字符串结束符'\0'时停止
if (isdigit(*str)) { // 检查当前字符是否为数字
printf("%d", *str - '0'); // 输出数字,注意需要减去'0'将字符转换为数值
}
str++; // 移动指针到下一个字符
}
}
int main() {
char input[100];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin); // 获取包含空格的输入
// 移除输入字符串末尾的换行符
size_t len = strlen(input);
input[len - 1] = '\0';
extract_digits(input);
printf("\n");
return 0;
}
```
这个程序会逐个读取字符串中的每个字符,如果是数字,就输出其ASCII值减去'0',得到实际的数值。如果输入的是非数字字符,它会被忽略。
用C语言写一个程序,由用户输入字符串(字符串中含有空格),使用指针输出字符串中的数字字符
好的,下面是代码:
```c
#include <stdio.h>
int main() {
char str[100]; // 定义一个字符串数组
printf("请输入字符串:");
fgets(str, 100, stdin); // 从标准输入读取字符串
char *p = str; // 定义一个指向字符串的指针
printf("字符串中的数字字符为:");
while (*p != '\0') { // 遍历字符串
if (*p >= '0' && *p <= '9') { // 判断当前字符是否为数字字符
printf("%c ", *p); // 输出数字字符
}
p++; // 指针指向下一个字符
}
printf("\n");
return 0;
}
```
代码解释:
先定义一个字符串数组 `str`,用于存储用户输入的字符串,长度为 100。
然后使用 `fgets` 函数从标准输入读取字符串,将其存储到 `str` 中。
接着定义一个指向字符串的指针 `p`,将其指向字符串的首字符。
然后使用 `while` 循环遍历字符串,对于每个字符,判断其是否为数字字符,如果是,则输出该字符。
最后输出换行符,结束程序。
希望能够帮到你!
阅读全文