输入一个字符串:“李明 12班 12334567“,用sscanf函数解析,并存入一个结构体中
时间: 2023-05-30 08:01:16 浏览: 63
```c
#include <stdio.h>
#include <stdlib.h>
struct student {
char name[10];
int class_num;
long long student_id;
};
int main() {
char str[] = "李明 12班 12334567";
struct student s;
sscanf(str, "%s %d班 %lld", s.name, &s.class_num, &s.student_id);
printf("姓名:%s\n班级:%d\n学号:%lld\n", s.name, s.class_num, s.student_id);
return 0;
}
```
相关问题
输入一个字符串:“李明 12班 12334567“,用sscanf函数解析,并存入一个ros自定义消息类型中
假设我们要存入的自定义消息类型为MyMessage,包含三个字段:name,class和number。
代码如下:
```cpp
#include <ros/ros.h>
#include <sstream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
struct MyMessage
{
std::string name;
std::string class;
int number;
};
int main(int argc, char **argv)
{
ros::init(argc, argv, "sscanf_demo");
ros::NodeHandle n;
std::string input_str = "李明 12班 12334567";
// 用sscanf解析字符串
char name[20], class_str[20], number_str[20];
sscanf(input_str.c_str(), "%s %s %s", name, class_str, number_str);
// 将解析结果存入自定义消息类型中
MyMessage msg;
msg.name = name;
msg.class = class_str;
msg.number = atoi(number_str);
// 打印解析结果
ROS_INFO("Name: %s", msg.name.c_str());
ROS_INFO("Class: %s", msg.class.c_str());
ROS_INFO("Number: %d", msg.number);
return 0;
}
```
解析结果:
```
[INFO] [1631703743.100925]: Name: 李明
[INFO] [1631703743.100957]: Class: 12班
[INFO] [1631703743.100971]: Number: 12334567
```
如何使用 fgets 函数来输入一行字符串,然后再使用 sscanf 函数来解析这个字符串并将数字存储在对应的变量中
您好,对于您的问题,以下是代码示例:
```c
#include <stdio.h>
int main() {
char input[100];
int num1, num2;
printf("请输入两个数字,以空格分隔:\n");
fgets(input, 100, stdin); // 从标准输入读取一行字符串
sscanf(input, "%d%d", &num1, &num2); // 从字符串中解析数字并存储到变量中
printf("您输入的数字为 %d 和 %d\n", num1, num2);
return 0;
}
```
以上示例中使用 fgets 函数从标准输入读取了一行字符串,并使用 sscanf 函数从字符串中解析出两个数字,分别存储到 num1 和 num2 两个变量中。最后输出了这两个数字。
如果您还有其他问题或疑问,欢迎继续提问。