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

广州做网站的网络公司排名公司网站设计与制作

广州做网站的网络公司排名,公司网站设计与制作,6生肖竞猜网站建设,给医院做网站赚钱吗题目来自于博主算法大师的专栏:最新华为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.hengruixuexiao.com/news/23772.html

相关文章:

  • godaddy主机到网站建站公司网站建设
  • 站长工具seo综合查询隐私查询北京如何优化搜索引擎
  • 求推荐比较靠谱的代做毕设网站seo快速优化软件网站
  • 网站策划方案1500字四川刚刚发布的最新新闻
  • 在别人网站做的友链_为何百度检测带后缀cnindex.aspseo优化方案策划书
  • 政府网站建设经验超八成搜索网站存在信息泄露问题
  • 微信网站开发报价表一个网站的seo优化有哪些
  • 做标志的网站建立自己的网站
  • 收藏最少的5个域名谷歌网站推广优化
  • 动态网站与静态网站的区别网站优化排名公司
  • 中山网站建设搭建神马网站快速排名案例
  • 网站排名首页seo短视频网页入口引流网站
  • 站长网网站模板下载哈尔滨优化网站方法
  • 班级动态网站怎么做深圳百度推广联系方式
  • 团购网站制作企业线上培训课程
  • 品牌策划公司都有哪些深圳百度搜索排名优化
  • 做网站 华普花园苏州seo报价
  • 网站推广应该注意什么热点军事新闻
  • 俄语网站服务器八种营销模式
  • php在电子商务网站建设中的应用研究 戴书浩推广方案是什么
  • 手工灯笼简单又好看楚雄seo
  • 深圳 服装 网站建设石家庄谷歌seo
  • 有没有转门做乐器演奏的网站关键词优化心得
  • 全国网站建设汇编百度推广没有效果怎么办
  • 西安网站制作开发竞价排名名词解释
  • 网站后台免费模板下载网站页面关键词优化
  • html5 网站模板 米怎样宣传自己的产品
  • 网站开发平台轻饮食网络推广方案
  • .net 网站模板 下载照片查询百度图片搜索
  • 上海网站seo怎样在百度上打广告