void dlt() { //删除信息 int flag, i, j;//输入变量 char s1[100]; printf("请输入要删除学生的学号:\n"); getchar(); gets(s1); flag = 0; for (i = 0; i < n; i++) {//n是前面的n if (strcmp(stu[i].num, s1) == 0) {//比较两个数组相等等于0 flag = 1; for (j = i; j < n - 1; j++) {//j小于n-1才能不超出范围 才能删减 stu[j] = stu[j + 1]; } } if (flag == 1) break; } if (flag == 0) printf("未找到该学生!\n"); if (flag == 1) { printf("删除成功!\n"); n--;//删去相关信息 } system("pause");//让系统暂停}
时间: 2023-06-13 10:07:29 浏览: 48
这段代码是一个删除学生信息的函数,输入要删除的学生学号,查找学号是否存在,如果存在则删除该学生信息,否则输出未找到该学生。其中使用了一个标记变量flag来记录是否找到该学生,使用两个循环,第一个循环是遍历所有学生信息,第二个循环是将要删除的学生信息后面的所有信息往前移动一个位置,最后将n减1表示删减了一个学生信息。最后使用system("pause")来暂停程序,防止程序一闪而过。
相关问题
#include <pcap/dlt.h>
这是一个 C/C++ 头文件,用于使用 pcap 库中的数据链路类型(data link type)常量。pcap 库是一个用于捕获网络数据包的库,它可以帮助开发者实现网络协议分析、网络安全等应用。DLT 是 Data Link Type 的缩写,这个头文件中定义了一系列常量,每个常量对应一个数据链路类型。这些常量可以用于设置 pcap 库中的过滤器以及解析网络数据包。
使用tcpdump命令获取网络包 C/C++
可以使用libpcap库来编写C/C++程序获取网络包。下面是一个简单的示例代码,可以获取指定网卡的所有TCP包:
```c++
#include <stdio.h>
#include <pcap.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) {
struct ether_header *eth = (struct ether_header *)packet;
if (ntohs(eth->ether_type) == ETHERTYPE_IP) {
struct iphdr *iph = (struct iphdr *)(packet + sizeof(struct ether_header));
if (iph->protocol == IPPROTO_TCP) {
struct tcphdr *tcph = (struct tcphdr *)(packet + sizeof(struct ether_header) + sizeof(struct iphdr));
printf("TCP packet: %s:%d -> %s:%d\n", inet_ntoa(*(in_addr *)&iph->saddr), ntohs(tcph->source), inet_ntoa(*(in_addr *)&iph->daddr), ntohs(tcph->dest));
}
}
}
int main(int argc, char **argv) {
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *handle = pcap_open_live(argv[1], BUFSIZ, 1, 1000, errbuf);
if (!handle) {
printf("pcap_open_live() failed: %s\n", errbuf);
return 1;
}
if (pcap_datalink(handle) != DLT_EN10MB) {
printf("Device not Ethernet\n");
return 1;
}
if (pcap_setfilter(handle, pcap_compile(handle, "tcp", 1, 0)) != 0) {
printf("pcap_setfilter() failed\n");
return 1;
}
printf("Listening on %s...\n", argv[1]);
pcap_loop(handle, -1, got_packet, NULL);
pcap_close(handle);
return 0;
}
```
使用方法:
```bash
$ sudo ./get_tcp_packets eth0
```
其中,eth0是你要监听的网卡名称。注意需要以root权限运行。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)