C++经典程序(2)

要读取报文内容,你可以使用C语言的socket编程库来读取报文。下面是一个简单的示例代码,演示了如何使用C语言读取HTTP报文内容:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>#define BUFFER_SIZE 4096int main() {// 创建socketint sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0) {perror("socket");exit(EXIT_FAILURE);}// 设置服务器地址struct sockaddr_in server_addr;server_addr.sin_family = AF_INET;server_addr.sin_port = htons(80);server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");// 连接服务器if (connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {perror("connect");exit(EXIT_FAILURE);}// 构造HTTP请求char request[1000];sprintf(request, "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n");// 发送HTTP请求if (send(sockfd, request, strlen(request), 0) < 0) {perror("send");exit(EXIT_FAILURE);}// 读取服务器响应char buffer[BUFFER_SIZE];memset(buffer, 0, sizeof(buffer));ssize_t num_bytes;while ((num_bytes = recv(sockfd, buffer, sizeof(buffer) - 1, 0)) > 0) {buffer[num_bytes] = '\0';printf("%s", buffer);memset(buffer, 0, sizeof(buffer));}// 关闭socketclose(sockfd);return 0;
}

这个示例代码使用了socket库来创建一个TCP socket,并连接到指定的服务器。然后,它构造了一个HTTP GET请求,并发送给服务器。接下来,它使用循环读取服务器的响应,并将响应内容打印到控制台上。最后,关闭socket连接。

请注意,这个代码示例仅仅是一个基本的示例,实际情况可能会更加复杂。在实际开发中,你可能需要处理更多的错误情况、处理报文的分块传输、解析报文头部等等。

下面是一个简单的二分查找算法的C代码示例:

#include <stdio.h>int binarySearch(int arr[], int left, int right, int target) {while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) {return mid;}else if (arr[mid] < target) {left = mid + 1;}else {right = mid - 1;}}return -1; // 找不到目标元素
}int main() {int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};int n = sizeof(arr) / sizeof(arr[0]);int target = 7;int result = binarySearch(arr, 0, n - 1, target);if (result == -1) {printf("目标元素不存在\n");}else {printf("目标元素的索引为 %d\n", result);}return 0;
}

在这个示例代码中,我们定义了一个名为binarySearch的函数,它接收一个排序好的整数数组arr,数组的左边界left,右边界right和目标元素target作为参数。

binarySearch函数通过比较目标元素与数组中间元素的大小来确定目标元素在左半部分还是右半部分。如果目标元素等于中间元素,则返回中间元素的索引。如果目标元素小于中间元素,则在数组的左半部分继续查找。如果目标元素大于中间元素,则在数组的右半部分继续查找。通过不断缩小查找范围,最终可以找到目标元素或确定目标元素不存在。

在主函数中,我们定义了一个有序整数数组,并设置目标元素为7。然后我们调用binarySearch函数来查找目标元素在数组中的索引,并根据返回结果进行相应的输出。

请注意,这个示例代码假设输入的数组已经排序好。在真实应用中,你可能需要对输入的数组进行排序操作,或者使用其他方法来保证数组的有序性。

下面是一个简单的for循环的C代码示例:

#include <stdio.h>int main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;
}

在这个示例代码中,我们使用for循环打印0到9的整数。循环的初始条件为i = 0,循环条件为i &lt; 10,每次循环结束后,i增加1。在循环体内部,使用printf函数打印当前的i值。运行这段代码,输出结果为0 1 2 3 4 5 6 7 8 9

你可以根据自己的需求修改循环的初始条件、循环条件和循环体内的代码来实现不同的功能。

下面是一个二分搜索的C代码示例:

#include <stdio.h>int binarySearch(int arr[], int low, int high, int target) {while (low <= high) {int mid = low + (high - low) / 2;if (arr[mid] == target) {return mid;}else if (arr[mid] < target) {low = mid + 1;}else {high = mid - 1;}}return -1; // 如果未找到目标元素,则返回-1
}int main() {int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};int target = 9;int n = sizeof(arr) / sizeof(arr[0]);int result = binarySearch(arr, 0, n - 1, target);if (result == -1) {printf("目标元素 %d 未找到\n", target);}else {printf("目标元素 %d 在数组中的位置是 %d\n", target, result);}return 0;
}

在这个示例代码中,我们定义了一个函数binarySearch来实现二分搜索。函数接受一个有序数组arr以及数组的范围lowhigh,以及要搜索的目标元素target。在循环中,我们通过计算中间元素的索引mid来确定搜索范围的中间位置。如果中间元素等于目标元素,则直接返回中间元素的索引。如果中间元素小于目标元素,则更新lowmid + 1,继续在右半部分搜索。如果中间元素大于目标元素,则更新highmid - 1,继续在左半部分搜索。如果未找到目标元素,则返回-1。

main函数中,我们定义了一个有序数组arr和要搜索的目标元素target。我们通过调用binarySearch函数来执行二分搜索,并将结果保存在result变量中。最后,根据搜索结果打印相应的信息。

运行这段代码,将输出目标元素 9 在数组中的位置是 4,因为数字9在数组中的索引位置为4。

以下是一个经典的C++代码示例,用于计算斐波那契数列的前n个数:

#include <iostream>
using namespace std;int fibonacci(int n) {if (n <= 1) {return n;} else {return fibonacci(n - 1) + fibonacci(n - 2);}
}int main() {int n;cout << "请输入要计算斐波那契数列的前n个数:" << endl;cin >> n;cout << "斐波那契数列的前" << n << "个数为:" << endl;for (int i = 0; i < n; i++) {cout << fibonacci(i) << " ";}return 0;
}

这段代码首先定义了一个递归函数fibonacci(),用于计算斐波那契数列的第n个数。然后在main()函数中,通过用户输入获取要计算的斐波那契数列的前n个数。接下来使用循环,调用fibonacci()函数并输出结果,最后返回0表示程序执行成功。

这个示例展示了C++中函数声明和定义的基本用法,以及循环和条件语句的使用。同时也展示了如何使用输入输出流进行用户交互和结果输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis底层原理

持久化 Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB RDB持久化是把当前进程数据生成快照保存到硬盘的过程。所谓内存快照,就是…

Python修改二值图像某特定颜色

#改变图片像素值164-1&#xff1b;255-2&#xff1b; from PIL import Image import cv2 import os # img cv2.imread("F:/AI/glaucoma_set/gla_img_120_Chall/Annotation-Training400/Disc_Cup_Fovea_Illustration/g0001.jpg") # img cv2.imread("F:/AI/glau…

网络爬虫中的代理IP应用与高效管理策略探析

在网络爬虫技术日益普及的今天&#xff0c;面对目标网站对访问频率、IP地址等的严格限制&#xff0c;如何合理、有效地利用和管理代理IP资源成为了一项至关重要的任务。本文将深入探讨代理IP在爬虫项目中的应用&#xff0c;并提出一套科学高效的管理策略。 一、代理IP在网络爬…

47.解释一下Spring AOP里面的几个名词

解释一下Spring AOP里面的几个名词 切面(Aspect): 在Spring Aop指定就是“切面类” ,切面类会管理着切点、通知。连接点(Join point): 指定就是被增强的业务方法通知(Advice): 就是需要增加到业务方法中的公共代码, 通知有很多种类型分别可以在需要增加的业务方法 不…

分布式I/O应用于智慧停车场的方案介绍

客户案例背景 目前车位检测技术有磁电技术、超声波技术、红外线技术、图像识别车位技术。考虑到例如电磁干扰、信号干扰等的环境因素影响&#xff0c;通常会采用组合使用的方式进行&#xff0c;如采用不同的传感器、应用不同的协议等&#xff0c;以便提高车位检测的准确性和实时…

xilinix 7系列器件生成已加密文件和已经过身份验证的文件

注释 &#xff1a;如需了解更多信息&#xff0c;请参阅《使用加密确保 7 系列 FPGA 比特流的安全》(XAPP1239)。 要生成加密比特流&#xff0c;请在 Vivado IDE 中打开已实现的设计。在主工具栏中&#xff0c;依次选择“Flow” → “Bitstream Settings”&#xff08;流程 >…

Go语言学习笔记(二)

Go语言的学习资源 以下是一些推荐的Go语言学习资源的链接&#xff1a; Go语言教程&#xff1a;https://golang.org/doc/Go by Example&#xff1a;Go by ExampleGolang Tutorials&#xff1a;https://golangtutorials.com/Go语言第一课&#xff08;慕课网&#xff09;&#x…

每周三提前预知:绝地求生27.2版本最早1月10日上线,交易所系统、召唤掩体等新功能上线

嗨&#xff0c;我是闲游盒 27.2新版本预计最早1月10日上线&#xff0c;届时会停机更新约9小时&#xff0c;大家注意合理安排游戏时间! 这次更新带来了很多荣都地图的新玩法&#xff0c;主打的交易所系统即将上线! PUBG官方已经发布了预告 交易所系统 而这次的交易所系统玩法…

Java利用Apache compress包实现文件夹压缩成Zip包

Apache common提供了很多实用的工具包&#xff0c;下面就说一下如何用compress包来压缩文件夹。先引入compress&#xff0c;io和lang3这3个工具包&#xff1a; <dependencies><dependency><groupId>org.apache.commons</groupId><artifactId>com…

常见排序算法及其稳定性分析

前言&#xff1a; 排序算法可以说是每一个程序员在学习数据结构和算法时必须要掌握的知识点&#xff0c;同样也是面试过程中可能会遇到的问题&#xff0c;在早些年甚至还会考冒泡排序。由此可见呢&#xff0c;掌握一些常见的排序算法是一个程序员的基本素养。虽然现在的语言标…

2024 年 Linux 和开源的六大趋势预测

文章地址&#xff1a;观点|2024 年 Linux 和开源的六大趋势预测 让我们尝试预测未来吧&#xff01; 新的一年快乐&#xff0c;朋友们 ✨ 2024 年的钟声已经敲过&#xff0c;我们有必要去预见一下将塑造本年度的各种潮流。 我们不能预见未来&#xff0c;所以无法精确预知将会发…

libzmq使用zmq_poller就出现 was not declared in this scope

问题描述: 最近在使用zmq的 pub/sup模型的时候,使用zmq_poller就出现 was not declared in this scope 问题分析 关于这个问题,见zmq.h 619行左右: 619: #ifdef ZMQ_BUILD_DRAFT_API poller相关的api接口都在里面,如果这里没有定义ZMQ_BUILD_DRAFT_API宏,poller相关的API是无…

k8s的node亲和性和pod亲和性和反亲和性 污点 cordon drain

node亲和性和pod亲和性和反亲和性 污点 cordon drain 集群调度: schedule的调度算法 预算策略 过滤出合适的节点 优先策略 选择部署的节点 nodeName:硬匹配&#xff0c;不走调度策略&#xff0c;node01 nodeSelector:根据节点的标签选择&#xff0c;会走调度的算法 只…

PSoc62™开发板之PWM呼吸灯

实验目的 利用PWM动态调节输出功率达到控制LED呼吸变化的效果 实验准备 PSoc62™开发板&#xff08;开发板已经板载LED&#xff09; 板载资源 板载有多少pwm 创建工程例程&#xff0c;在libraries/HAL_Drivers/drv_pwm.h中查看BSP支持的pwm数量及对应的GPIO&#xff0c;可…

pgsql中epoch用法

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 昨天又被叫回来加班,説是数据问题,又回来加班搞,到了以后发现数据没问题,那就是查询接口的事了,写查询接口的人用时间戳去查询,明明直接可以直接用日期查询,非得改成时间戳查询,结果还是有问题,接下来复盘一下…

【华为OD】系统需要提供人民币(CNY)、美元(USD)、英镑(GBP)、港币(HKD)价值 转换功能。

题目描述: 系统需要提供人民币(CNY)、美元(USD)、英镑(GBP)、港币(HKD)价值 转换功能。为了简单处理,题目的说明和考生调试可以用下面的默认汇 率:2 3 1 CNY = 2 HKD 1 USD = 8 CNY 1 GBP = 2 USD请按照汇率实现货

「 网络安全术语解读 」内容安全策略CSP详解

引言&#xff1a;什么是CSP&#xff0c;它为什么可以防御一些常见的网络攻击&#xff0c;比如XSS攻击&#xff0c;具体原理是什么&#xff1f;以及如何绕过CSP&#xff1f; 1. CSP定义 CSP&#xff08;Content Security Policy&#xff0c;内容安全策略&#xff09;是一种网络…

LeetCode 32. 最长有效括号

最长有效括号 给你一个只包含 ‘(’ 和 ‘)’ 的字符串&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 方法一、栈 由于要存在配对&#xff0c;必然有)存在&#xff0c;配对的长度为上一个)到当前)之间的距离&#xff0c;即为最长配对子串&…

centos安装gradle

1.将gradle.zip拷到centos 解压 2.配置环境变量 vim /etc/profile 在最后添加 export GRADLE_HOME/zx/gradle-8.5 export PATH$PATH:$GRADLE_HOME/bin:${PATH} 之后source /etc/profile gradle -version 安装成功

RK3566环境搭建

环境&#xff1a;vmware16&#xff0c;ubuntu 18.04 获取SDK前需要安装 sudo apt update sudo apt install -y repo git python 下载完成后先验证一下MD5码 md5sum rk356x_linux_release_v1.3.0b_20221213_split_dir/*firefly_split* 解压 rk3566ubuntu:/path/to$ mkdir ~…