当前位置: 首页 > news >正文

做国外直播网站最新军事战争新闻消息

做国外直播网站,最新军事战争新闻消息,京东网站开发,哪种语言的网站 做seo更好题目来自于博主算法大师的专栏:最新华为OD机试C卷AB卷OJ(CJavaJSPy) https://blog.csdn.net/banxia_frontend/category_12225173.html 题目 给定一个 url 前缀和 url 后缀 通过,分割 需要将其连接为一个完整的 url 如果前缀结尾和后缀开头都…

题目来自于博主算法大师的专栏:最新华为OD机试C卷+AB卷+OJ(C++JavaJSPy) https://blog.csdn.net/banxia_frontend/category_12225173.html

题目

给定一个 url 前缀和 url 后缀
通过,分割 需要将其连接为一个完整的 url
如果前缀结尾和后缀开头都没有/
需要自动补上/连接符
如果前缀结尾和后缀开头都为/
需要自动去重
约束:
不用考虑前后缀 URL 不合法情况

输入

url 前缀(一个长度小于 100 的字符串)
url 后缀(一个长度小于 100 的字符串)

输出描述

拼接后的 url

示例一

输入

/acm,/bb

输出

/acm/bb

示例二

输入

/abc/,/bcd

输出

/abc/bcd

示例三

输入

/acd,bef

输出

/acd/bef

示例四

输入

,

输出

/

思路

解题思路如下:

  1. 读取输入:通过 fgets 函数从标准输入读取一行,该行包含 URL 前缀和后缀,中间用逗号分隔。同时确保移除换行符,使得字符串正确终止。

  2. 分割前后缀:使用 strchr 函数找到逗号的位置,并将逗号替换为终止符 \0,从而将输入的字符串分割成前缀(url1)和后缀(url2)两部分。

  3. 处理特殊情况

    • 检查前缀(url1)是否以 / 结尾,如果是,则去掉末尾的 /
    • 检查后缀(url2)是否以 / 开头,如果是,则去掉开头的 /。这里使用了 memmove 函数,因为它可以安全地在重叠内存区域中移动数据。
  4. 拼接 URL:根据题目要求,在前缀和后缀之间加上一个 / 符号,组成完整的 URL。

  5. 输出结果:最后,将处理后的完整 URL 输出到标准输出。

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main() {// 定义存储 URL 前缀和后缀的字符数组char url1[100], url2[100];// 定义输入缓冲区,假设两个URL和逗号总共不超过200个字符char input[201]; // 从标准输入读取一行(包含前缀和后缀,中间由逗号分隔)fgets(input, 201, stdin); // 移除换行符,确保字符串正确终止input[strcspn(input, "\n")] = '\0';// 获取输入字符串长度int len = strlen(input);// 查找并分割字符串,在逗号处断开为前缀和后缀char *comma_pos = strchr(input, ',');if (comma_pos != NULL) {// 将逗号替换为终止符以分离前后缀*comma_pos = '\0'; // 分别将前缀和后缀复制到各自的字符数组中strcpy(url1, input);strcpy(url2, comma_pos + 1);}// 计算前缀和后缀的长度int len1 = strlen(url1);int len2 = strlen(url2);// 处理特殊情况:如果前缀以 / 结尾,则移除该 /if (len1 > 0 && url1[len1 - 1] == '/') {url1[--len1] = '\0'; // 将末尾的 / 替换为终止符}// 处理特殊情况:如果后缀以 / 开头,则将 / 向右移动一位if (len2 > 0 && url2[0] == '/') {memmove(url2, url2 + 1, len2--); // 移除开头的 / 并调整字符串内容}// 拼接完整的 URL,并打印输出printf("%s/%s\n", url1, url2);return 0;
}

注意

1、memmove

memmove 是 C 语言标准库中的一个函数,其主要作用是移动内存中的一段数据。这个函数可以安全地复制内存区域,即使源内存区(source)和目标内存区(destination)有重叠部分也能正确处理。

函数原型通常定义如下:

void* memmove(void* dest, const void* src, size_t n);
  • dest:指向目标内存区域的指针。
  • src:指向源内存区域的指针。
  • n:要移动的字节数。

当两个内存区域有重叠时,如果直接使用 memcpy 函数可能会导致未复制或错误复制的数据,因为 memcpy 不会考虑重叠情况,它只是简单地从源到目标逐字节复制。而 memmove 则更加智能,它在执行复制操作时会确保即便目标区域覆盖了源区域的部分内容,也会先将这部分内容保存下来,然后再复制过去,从而保证了所有数据的完整性和正确性。

举例来说,假设你有一个数组,并想将其部分内容向左移动几个位置,此时目标和源区域就会重叠,这时就需要使用 memmove 而不是 memcpy

以下是一个简单的用法示例:

char str[] = "Hello, World!";
memmove(str + 7, str, 6); // 移动前六个字符到七个字符的位置
str[13] = '\0'; // 添加终止符,确保字符串结束
// 此时 str 的内容变为 "World!Hello"

在这个例子中,memmove 确保了即使目标区域(str+7)与源区域(str)有重叠,“Hello” 这部分内容仍能正确地被移动并覆盖到原来 “World!” 后面。

http://www.mnyf.cn/news/40326.html

相关文章:

  • 深圳便宜做网站北京网络优化推广公司
  • 网站解封原因惠州网络营销公司
  • 做视频教学网站如何做自己怎么做网页推广
  • 香港网站建设 深圳分公司广告招商
  • 宁波汽车网站建设杭州网站优化平台
  • 网站建设近义词成全高清免费观看mv
  • 哪个网站可以做立体字的模板网站排名优化首页
  • 网站的折线图怎么做2345网址导航怎么样
  • wordpress网站添加背景音乐网站安全检测
  • 虎门专业做网站公司百度竞价排名技巧
  • 邯郸网站建设最新报价网络建站优化科技
  • 南宁做网站开发的公司深圳品牌seo
  • 做网站用dramwaver还是vs站长之家是什么
  • 学网站建设有前途吗如何广告推广
  • 贵州省住房与城乡建设厅网站最靠谱的十大教育机构
  • b2b商务网站有哪些上海百度推广方案
  • 定制版app高明搜索seo
  • 义乌本地网站开发百度网址导航
  • vr全景网站开发sem账户托管公司
  • 专用车网站建设哪家好如何快速收录一个网站的信息
  • 西安攻略旅游自由行怎么玩湖北seo网站推广
  • 制造行业网站建设网页设计框架图
  • 专门做电商的招聘网站外包公司为什么没人去
  • 建设网站具体步骤百度网页版下载安装
  • 长沙网站搜索排名头条今日头条新闻
  • 绥化建设局网站百度投诉中心人工电话号码
  • 网站用户细分网络营销专业如何
  • e福州官方网站外贸营销
  • 国际摄影网站网络营销的核心
  • 做那个网站销售产品比较好内部搜索引擎优化