”姓名:找 学号:11 性别:男 成绩:33.00 “,使用C语言标准IO处理这串字符串,从中提取出姓名、学号、性别、成绩,分别存在字符串a,b,c,d中
时间: 2024-10-25 17:06:54 浏览: 18
在C语言中,你可以使用`sscanf()`函数结合`fgets()`来从字符串中按照特定格式解析提取所需信息。假设输入字符串的格式始终是固定的,这里是一个示例代码片段:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LINE_LENGTH 100
int main() {
char input[MAX_LINE_LENGTH];
char a[50], b[50], c[10], d[10]; // 假设姓名最多49个字符,学号和成绩最多9个字符
fgets(input, sizeof(input), stdin); // 从标准输入读取一整行
if (strlen(input) > 0 && input[strlen(input) - 1] == '\n') { // 去掉末尾的换行符
input[strlen(input) - 1] = '\0';
}
if (sscanf(input, "姓名:%[^,] , 学号:%[^\t] , 性别:%[^\t] , 成绩:%lf", a, b, c, &d) != 4) {
printf("Invalid format or data.\n");
return 1;
}
printf("姓名:%s\n", a);
printf("学号:%s\n", b);
printf("性别:%s\n", c);
printf("成绩:%f\n", d);
return 0;
}
```
这个代码首先读取一行字符串,然后使用`sscanf()`尝试解析四个部分:姓名、学号、性别和成绩。如果输入格式不符合预期,程序会返回错误。注意这里假设姓名、学号由空格分隔,性别由逗号分隔,成绩是浮点数。你需要根据实际的输入格式调整`sscanf()`的正则表达式。
阅读全文