合并字符串的几个小程序
来源:互联网 发布:客户端和 java 编辑:程序博客网 时间:2024/05/18 20:09
某天被人问到关于合并两个字符串的小程序,没看明白人家的代码错在哪,只是觉得别扭,所以自己写了下。还发现了一些挺有意思的东西。做成了几个完整的小程序。
#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:虽然这个小程序比较简单,但是如果仔细的去想的话,还是能体现出很多问题的。
- 合并字符串的几个小程序
- io的几个小程序
- Python的几个小程序
- 几个有意思的小程序
- scala的几个小程序
- 几个基础的小程序
- [C#]中英文字幕合并的小程序
- java的几个有意思的小程序
- 初学C的几个小程序之一
- 几个常见的“算法”小程序
- 这几天写的几个小程序
- 程序中用到的几个小技巧
- 几个c 的小程序记录
- JAVA程序的几个小经验
- 初识PLSQL,几个简单的小程序
- java几个容易出错的小程序
- 几个简单适合小程序的Makefile
- Python的几个文件操作小程序
- windows下使用mingw+msys+gvim来写C++程序
- Myeclipse报Could not create Java VM
- Hello, world!
- myeclipse设置tomcat启动方式
- ArrayList的实现与System.arraycopy的使用!
- 合并字符串的几个小程序
- MVS master console意外 down的处理办法。
- [计算几何]Pku2079-Triangle
- 关于JPA(Hibernate)+spring在未使用web的情况下使用懒加载,导致no sesssion or session has closed!
- STL学习笔记
- 阿凡达 电影终结者
- 【总编观察】CES:IT大变革,软件的新平台与新机遇
- 天空流云
- MYSQL的联合查询问题,难呀。。。。。