c语言将一串字符串中所有数字提取出来
时间: 2024-02-11 19:05:11 浏览: 134
可以通过循环遍历字符串中的每一个字符,判断其是否为数字,如果是则将其加入到一个新的字符串中。具体实现如下:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[100], nums[100];
int len, i, j = 0;
printf("请输入字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len; i++) {
if (isdigit(str[i])) {
nums[j] = str[i];
j++;
}
}
nums[j] = '\0';
printf("提取出的数字为:%s\n", nums);
return 0;
}
```
以上代码先输入一个字符串,然后循环遍历字符串中的每一个字符,判断其是否为数字,如果是则将其加入到一个新的字符串`nums`中。最后输出提取出的数字字符串。需要注意的是,`isdigit()`函数需要引入`ctype.h`头文件。
相关问题
c语言从一串字符中提取数字
在C语言中,要从一串字符中提取数字可以通过循环遍历每个字符,并使用C语言提供的字符判断函数来判断字符是否为数字。具体步骤如下:
1. 定义一个字符数组,存储待提取数字的字符串。
2. 使用循环遍历待提取数字的字符串的每个字符。
3. 判断当前字符是否为数字,可以使用C语言提供的isdigit()函数。
4. 若当前字符是数字,则将其添加到一个临时字符串中。
5. 继续循环遍历下一个字符,直到遍历完整个字符串。
6. 最后,将临时字符串中的字符转换成数字,可以使用C语言提供的atoi()或者sscanf()函数。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main() {
char str[] = "abc123def456ghi";
char temp[20] = "";
int numbers[10] = {0}; // 存储提取到的数字
int count = 0; // 记录提取到的数字个数
for (int i = 0; i < strlen(str); i++) {
if (isdigit(str[i])) {
strncat(temp, &str[i], 1); // 将数字字符添加到临时字符串中
} else {
if (strlen(temp) > 0) {
numbers[count] = atoi(temp); // 将临时字符串转换成数字
count++;
memset(temp, 0, sizeof(temp)); // 清空临时字符串
}
}
}
// 输出提取到的数字
for (int i = 0; i < count; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
```
以上代码将从字符串"abc123def456ghi"中提取出数字123和456,并打印输出。
用C语言将下面字符串中的数字提取出来。
你好!可以使用C语言的字符串处理函数和循环来提取字符串中的数字。以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void extractNumbers(const char* str) {
int len = strlen(str);
char number[10] = ""; // 假设最大数字长度为10
int numIndex = 0;
for (int i = 0; i < len; i++) {
if (isdigit(str[i])) {
number[numIndex++] = str[i];
} else if (numIndex > 0) {
// 当遇到非数字字符时,如果之前已经提取到数字,则打印并清空number数组
number[numIndex] = '\0'; // 添加字符串结束符
printf("%s\n", number);
numIndex = 0;
}
}
// 如果字符串以数字结尾,则打印最后一个数字
if (numIndex > 0) {
number[numIndex] = '\0';
printf("%s\n", number);
}
}
int main() {
const char* str = "abc123def456ghi";
extractNumbers(str);
return 0;
}
```
上述代码通过循环遍历字符串中的每个字符,如果遇到数字字符,则将其添加到`number`数组中,直到遇到非数字字符。当遇到非数字字符时,如果之前已经提取到数字,则打印该数字并清空`number`数组。最后,如果字符串以数字结尾,则打印最后一个数字。
请注意,上述代码仅提取整数型数字,对于小数或其他数字格式可能需要进行适当的修改。
阅读全文