合并字符串的几个小程序

简介: 某天被人问到关于合并两个字符串的小程序,没看明白人家的代码错在哪,只是觉得别扭,所以自己写了下。还发现了一些挺有意思的东西。做成了几个完整的小程序。 #includevoid main() {     char s1[100],s2[100];     i...

某天被人问到关于合并两个字符串的小程序,没看明白人家的代码错在哪,只是觉得别扭,所以自己写了下。还发现了一些挺有意思的东西。做成了几个完整的小程序。

#include<stdio.h>
void main()

{

    char s1[100],s2[100];

    int i,j;
    gets(s1);
    gets(s2);
    i=0;
    while(s1[i])i++;
     j=0;
    while(s2[j])
    {
        s1[i++]=s2[j++];
    }
    s1[i]='/0';
    puts(s1);
}

程序1:这个程序来源于网上,属于比较简练,特别是gets()和puts()的使用,属于比较简练。

 #include<stdio.h>

 char * connection(char s3[],char s4[],char s_temp[])
{
 
 int i,j;
 i=0;
 while(s3[i])
 {
  s_temp[i]=s3[i];
  i++;
 }
 j=0;
 while(s4[j])
 {
  s_temp[i]=s4[j];
  i++;
  j++;
 }

 s_temp[i]='/0';

 
    return s_temp;
}


void main()
{
 char s1[100],s2[100],s_tempt[100];
 printf("input the element of s1:/n");
 scanf("%s",s1);
 printf("input the element of s2:/n");
 scanf("%s",s2);
   

 

    char * s5=connection(s1,s2,s_tempt);


 puts(s5);
 puts(s1);
 puts(s2);


}

程序2:这里把合并字符串这个功能抽取出来,做成一个单独的函数。在调这个程序的时候,也碰到了几个比较有意思的问题。数组名就是个地址,也可以说是个指针,所以如果在connection函数中对数组进行操作,是会改变初始数组的。所以在这里,使用了第三个全局变量,是为了保证原有的字符串内容不被改变。

#include<stdio.h>

void connection(char s3[],char s4[],char s_temp[])
{
 
 int i,j;
 i=0;
 while(s3[i])
 {
  s_temp[i]=s3[i];
  i++;
 }
 j=0;
 while(s4[j])
 {
  s_temp[i]=s4[j];
  i++;
  j++;
 }

 s_temp[i]='/0';

 

}


void main()
{
 char s1[100],s2[100],s_tempt[100];
 printf("input the element of s1:/n");
 scanf("%s",s1);
 printf("input the element of s2:/n");
 scanf("%s",s2);
   

 

    connection(s1,s2,s_tempt);

 puts(s_tempt);
 puts(s1);
 puts(s2);


}

程序3:这个程序没有使用函数返回值,而是直接通过数组名是地址的原理,在connection函数对数组进行操作后,直接进行访问。因为操作后的数组也是全局变量,所以函数不用返回值,就可以直接访问。

*#include<stdio.h>

void connection(char s3[],char s4[],char * & temp,char s_temp[])
{
 
 int i,j;
 i=0;
 while(s3[i])
 {
  s_temp[i]=s3[i];
  i++;
 }
 j=0;
 while(s4[j])
 {
  s_temp[i]=s4[j];
  i++;
  j++;
 }

 s_temp[i]='/0';

 
    temp=s_temp;
}


void main()
{
 char s1[100],s2[100],s_tempt[100];
 char * p_temp;
 printf("input the element of s1:/n");
 scanf("%s",s1);
 printf("input the element of s2:/n");
 scanf("%s",s2);
   

 

   connection(s1,s2,p_temp,s_tempt);
    char * s5=p_temp;


 puts(s5);
 puts(s1);
 puts(s2);


}

程序4:这里的四个参数,是完全没有必要的。之所以要这么做,是要测试一下全局变量和局部变量的差别。四个参数里面前两个是要合并的字符串,第三个是指针的引用,第四个是全局变量的一个数组。connection函数将计算结果如果放在局部变量里,再赋给指针的引用的话,结果将是乱码,而赋给全局变量的话,最后的结果是正常的。这其实是体现了一个connection函数中的局部变量具有暂时性。

 

PS:虽然这个小程序比较简单,但是如果仔细的去想的话,还是能体现出很多问题的。

目录
相关文章
|
编解码 JSON 小程序
微信小程序将字符串转码为json的时候一直报错,在微信小程序json对象和字符串的转换
微信小程序将字符串转码为json的时候一直报错,在微信小程序json对象和字符串的转换
663 0
|
小程序 前端开发
微信小程序将字符串中所有 '\\n' 转换成 '\n'
微信小程序将字符串中所有 '\\n' 转换成 '\n'
396 0
|
JSON 数据格式 小程序
微信小程序中字符串转JSON
当我们在小程序中,使用wx.request(),执行网络请求的接口的时候,如果遇到服务器返回的数据不是json类型的时候,就可以利用JSON.
2168 0
|
1月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
245 3
|
1月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
52 0
微信小程序更新提醒uniapp
|
3月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
109 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
3月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
105 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
|
3月前
|
存储 小程序 JavaScript
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的汉服交易小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的汉服交易小程序的详细设计和实现(源码+lw+部署文档+讲解等)
63 7
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
84 7
下一篇
无影云桌面