用c语言 简洁地将字符串中的第一个数值转换成十进制整数,遇到空格数值字符认为结束。不许用太多函数
时间: 2024-12-16 07:14:15 浏览: 5
在C语言中,简洁地将字符串中的第一个数值转换成十进制整数,并遇到空格或非数字字符就停止,可以使用`for`循环结合ASCII码表来实现。这里是一个简单的示例:
```c
#include <stdio.h>
#include <ctype.h>
int get_decimal_from_string(char str[]) {
int num = 0;
int sign = 1; // 初始化为正数
char *endptr;
for (char *p = str; isspace(*p) || (*p >= '0' && *p <= '9'); p++) {
if (*p == '-') { // 遇到负号
sign = -1;
} else {
num = num * 10 + (*p - '0'); // 将数字字符转换为对应的整数值并累加
}
if (!isspace(*p)) { // 遇到非空格字符则跳出循环
break;
}
}
num *= sign; // 负号处理
// 使用标准库函数检查是否合法输入
endptr = strtol(str, &endptr, 10);
if (*endptr != '\0' && *endptr != '\n') {
printf("Invalid input after conversion.\n");
return 0; // 或者返回错误值
}
return num;
}
int main() {
char str[] = "123 45 space 678";
int result = get_decimal_from_string(str);
if (result > 0) {
printf("Converted number is: %d\n", result);
}
return 0;
}
```
在这个示例中,`get_decimal_from_string`函数会从给定的字符串开始解析,直到遇到空格或非数字字符。注意,这个函数假设输入字符串始终有效(不包含除数字和空格外的其他非法字符),如果需要更强的验证机制,可以在最后添加额外的检查。
阅读全文