C语言一段字符串提取数字
时间: 2023-12-16 22:54:48 浏览: 153
下面是一段 C 语言代码,可以从字符串中提取数字:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[] = "hello 123 world 456";
int num, i = 0;
while (str[i]) {
if (isdigit(str[i])) {
num = 0;
while (isdigit(str[i])) {
num = num * 10 + (str[i] - '0');
i++;
}
printf("%d\n", num);
}
else {
i++;
}
}
return 0;
}
```
这段代码首先定义了一个字符串 `str`,其中包含了一些数字。然后,使用一个 while 循环,遍历整个字符串。如果当前字符是数字,则使用另一个 while 循环,提取出连续的数字,并将它们转换成整数类型。最后,将提取出来的数字打印出来。
注意,这段代码假设数字之间没有其他字符。如果需要提取包含在其他字符中的数字,可能需要使用更复杂的算法。
相关问题
C语言 一段 字符串转成数字
在C语言中,可以通过遍历字符串并进行判断来将字符串转换为数字。有多种方法可以实现这个过程,下面我将介绍两种常见的方法。
第一种方法是使用指针进行字符串转换。具体步骤如下:
1. 声明一个字符指针,并将其指向字符串的首地址。
2. 使用循环遍历字符串的每个字符。
3. 判断当前字符是否为数字,如果是数字则将其转换为对应的数值并进行累加。
4. 最后得到的累加结果就是字符串转换后的数字。
第二种方法是使用数组进行字符串转换。具体步骤如下:
1. 声明一个字符数组,并将字符串复制到数组中。
2. 使用循环遍历数组的每个字符。
3. 判断当前字符是否为数字,如果是数字则将其转换为对应的数值并进行累加。
4. 最后得到的累加结果就是字符串转换后的数字。
需要注意的是,这两种方法都需要在遍历过程中判断字符是否为数字。你可以使用ASCII码值进行比较,将字符减去 '0' 的ASCII码值即可得到实际的数字。
希望以上解答对你有帮助。如果你还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C语言之从字符串中获取数字](https://blog.csdn.net/yuanbaba_123/article/details/91415712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C语言:提取字符串中的数字](https://blog.csdn.net/m0_54346043/article/details/118091306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
c语言一段话中提取数字
可以使用C语言中的字符串处理函数和字符处理函数来提取数字。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[100];
int i, j, len, num;
printf("请输入一个字符串:\n");
scanf("%s", str);
len = strlen(str);
i = 0;
while (i < len) {
if (isdigit(str[i])) {
num = 0;
j = i;
while (j < len && isdigit(str[j])) {
num = num * 10 + (str[j] - '0');
j++;
}
printf("%d\n", num);
i = j;
} else {
i++;
}
}
return 0;
}
```
该程序首先从用户输入中读取一个字符串,然后遍历字符串的每个字符,如果当前字符是数字,则从当前位置开始往后提取数字,直到遇到非数字字符为止。在提取数字的过程中,可以使用一个变量来保存数字的值,每次读取新的数字位时将其加入变量中即可。最后,程序输出提取到的数字。
阅读全文