C语言确定字符串中小数点字符之前的有几位字符
时间: 2023-06-01 15:03:13 浏览: 127
可以通过遍历字符串中的每个字符,判断是否为小数点字符,如果是,则记录当前位置,遍历结束后,小数点位置减1即为小数点前面的字符数。如下所示:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "123.45";
int len = strlen(str);
int dot_pos = -1;
for (int i = 0; i < len; i++) {
if (str[i] == '.') {
dot_pos = i;
break;
}
}
if (dot_pos == -1) {
printf("字符串中没有小数点\n");
} else {
int count = dot_pos;
printf("小数点前面有%d位字符\n", count);
}
return 0;
}
```
输出结果为:
```
小数点前面有3位字符
```
相关问题
C语言如何读取字符串的小数点前面的数据
在C语言中,如果你想从字符串中读取小数点前的数据,可以使用标准库函数`fgets()`和`sscanf()`。假设有一个字符串变量`input_string`,其格式类似"123.45",你可以这样做:
```c
#include <stdio.h>
#include <string.h>
#define MAX_INPUT_LENGTH 100 // 为了演示,这里设定最大输入长度
int main() {
char input_string[MAX_INPUT_LENGTH];
float number;
// 读取字符串
fgets(input_string, sizeof(input_string), stdin); // 或者使用fopen/fscanf for file input
// 移除字符串末尾的换行符(fgets默认添加)
if (input_string[strlen(input_string) - 1] == '\n') {
input_string[strlen(input_string) - 1] = '\0'; // 只保留有效字符
}
// 使用sscanf解析小数点前的数据
if (sscanf(input_string, "%f", &number) == 1) { // 成功读取一个浮点数
printf("小数点前的数据: %d\n", (int)number); // 将浮点数转换为整数展示
} else {
printf("无法读取有效数字\n");
}
return 0;
}
```
在这个例子中,`sscanf()`尝试从`input_string`中解析一个浮点数,并将其存储到`number`中。如果解析成功,`(int)number`将给出小数点前的部分。
c语言提取字符串中的数字字符串
在C语言中,提取字符串中的数字字符串通常涉及到遍历字符串并判断每个字符是否为数字。可以使用标准库函数`isdigit()`来自`ctype.h`来检查字符是否是数字。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void extract_numbers(char *str, char *result) {
int i = 0;
result[0] = '\0'; // 初始化结果字符串为空
for (i = 0; str[i]; ++i) { // 遍历字符串直到遇到空字符
if (isdigit(str[i])) { // 如果当前字符是数字
result[i] = str[i]; // 将它添加到结果字符串
} else if (result[i] != '\0') { // 如果之前已经有数字,添加分隔符如空格
result[i] = ' ';
result[++i] = str[i];
}
}
result[i] = '\0'; // 结束字符串并防止溢出
}
int main() {
char input[] = "abc123def456";
char numbers[256];
extract_numbers(input, numbers);
printf("提取后的数字字符串: %s\n", numbers);
return 0;
}
```
这个例子中,`extract_numbers`函数会将输入字符串中的连续数字字符合并成一个字符串,并用空格分隔。注意,这只是一个基本的实现,实际应用可能需要处理更复杂的情况,比如负数、小数点等。
阅读全文
相关推荐















