c语言char数组过滤到剩下数字
时间: 2024-11-12 14:37:56 浏览: 4
在C语言中,如果你想从一个`char`数组中过滤出只包含数字的部分并保留它们,你可以通过遍历数组,并对每个字符检查是否为数字来进行。这里有一个简单的示例:
```c
#include <stdio.h>
#include <ctype.h> // 需要用到ctype_h库,包含了判断字符是否为数字的函数isdigit()
int main() {
char str[] = "abc123Hello456"; // 假设输入的字符串
int i, num_count = 0; // 初始化计数器
char filtered_str[50]; // 定义一个新的字符数组来存储数字
for (i = 0; str[i] != '\0'; i++) { // 遍历整个字符串
if (isdigit(str[i])) { // 检查字符是否是数字
filtered_str[num_count++] = str[i]; // 如果是数字,将其添加到新的数组中
}
}
filtered_str[num_count] = '\0'; // 结束新数组,添加空字符防止越界
printf("Filtered string containing only digits: %s\n", filtered_str);
return 0;
}
```
在这个例子中,我们只保留了字符串中的数字字符,并将结果保存在`filtered_str`数组中。
相关问题
c语言数组过滤到剩下数字
在C语言中,如果你有一个数组并想要过滤掉其中的非数字元素,你可以通过遍历数组、检查每个元素是否为数字(通常是整数或浮点数),然后只保留数字。这里是一个简单的示例:
```c
#include <stdio.h>
#include <ctype.h> // 包含用于字符处理的库
// 检查字符是否为数字
int is_number(char c) {
return (isdigit(c) || (c == '-' && !isspace(c+1))); // 负号后面不能有空格
}
// 过滤数组,只保留数字
void filter_numbers(int arr[], int size, int filtered_arr[], int* filtered_size) {
*filtered_size = 0; // 初始化过滤后的数组大小
for (int i = 0; i < size; i++) {
if (is_number(arr[i])) {
filtered_arr[*filtered_size] = arr[i]; // 将数字添加到新数组
(*filtered_size)++;
}
}
}
int main() {
int input[] = {4, 'a', 7, ' ', 12.5, -9, 'b'};
int filtered[100], actual_filtered_size;
filter_numbers(input, sizeof(input)/sizeof(input[0]), filtered, &actual_filtered_size);
printf("Filtered array: ");
for (int i = 0; i < actual_filtered_size; i++) {
printf("%d ", filtered[i]);
}
return 0;
}
```
在这个例子中,`filter_numbers` 函数会创建一个新的数组 `filtered_arr` 并仅包含输入数组中的数字。主函数中展示了如何使用这个函数。
定义一个长度为3的char数组,用C语言循环输入并倒叙打出
好的,以下是定义一个长度为3的 char 数组,用 C 语言循环输入并倒序打出的代码:
```c
#include <stdio.h>
int main() {
char str[3];
int i;
// 循环输入
for (i = 0; i < 3; i++) {
printf("请输入第%d个字符:", i + 1);
scanf(" %c", &str[i]);
}
// 倒序打出
for (i = 2; i >= 0; i--) {
printf("%c", str[i]);
}
printf("\n");
return 0;
}
```
在循环输入时,需要注意输入的字符前面要加一个空格,以过滤掉之前输入的回车符等空白字符。在倒序打出时,只需要用一个循环即可。
阅读全文