如何用sscanf读取 Frequency:2.484 GHz (Channel 14)中的2.484和14
时间: 2024-04-29 11:27:10 浏览: 59
您可以使用以下代码:
```
char str[] = "Frequency:2.484 GHz (Channel 14)";
float frequency;
int channel;
// 从字符串中匹配数字
sscanf(str, "Frequency:%f GHz (Channel %d)", &frequency, &channel);
// 打印结果
printf("Frequency: %.3f GHz, Channel: %d\n", frequency, channel);
```
结果为:
```
Frequency: 2.484 GHz, Channel: 14
```
相关问题
从“inet addr:192.168.182.131 Bcast:192.168.182.255 Mask:255.255.255.0”提取出来“192.168.182.131”,写出C程序
下面的C程序可以提取出“192.168.182.131”:#include <stdio.h>
#include <string.h>int main()
{
char str[] = "inet addr:192.168.182.131 Bcast:192.168.182.255 Mask:255.255.255.0";
char ip[16]; char *p = strstr(str, ":");
if(p != NULL)
{
sscanf(p + 1, "%s", ip);
printf("ip=%s\n", ip);
} return 0;
}
c语言读取文件中的内容赋值给相应变量,文件中内容: 源ip:1.1.1.1 源端口:1111 目的ip:1.1.1.2 目的端口:2222 协议:tcp
在C语言中,读取文件中的内容并将其赋值给相应的变量,你可以使用`fscanf`函数结合结构体或者动态内存分配来处理这种文本文件。假设我们有一个简单的数据结构来存储这些信息:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char source_ip[INET_ADDRSTRLEN];
int source_port;
char destination_ip[INET_ADDRSTRLEN];
int destination_port;
char protocol[4]; // 注意TCP一般为4字节,这里假设协议总是4字符长
} NetworkInfo;
void read_from_file(const char *filename, NetworkInfo *info) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("Error opening file: %s\n", filename);
return;
}
char buffer[64]; // 这里假设一行不超过64字节
while (fgets(buffer, sizeof(buffer), file)) {
if (sscanf(buffer, "%[^:]:%d:%[^:]:%d:%s", info->source_ip, &info->source_port,
info->destination_ip, &info->destination_port, info->protocol) == 5) {
break; // 文件一行对应一条记录,遍历到此处就停止
}
}
fclose(file);
}
int main() {
NetworkInfo net_info;
read_from_file("your_file.txt", &net_info);
// 现在 net_info.source_ip、net_info.source_port等已包含文件中的内容
printf("Source IP: %s, Source Port: %d, Destination IP: %s, Destination Port: %d, Protocol: %s\n",
net_info.source_ip, net_info.source_port, net_info.destination_ip, net_info.destination_port, net_info.protocol);
return 0;
}
```
阅读全文