ytu 1052: 写一函数,将两个字符串连接(水题,指针练习)
2024-10-19 05:26:55
1052: 写一函数,将两个字符串连接
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 343 Solved: 210
[Submit][Status][Web Board]
Description
写一函数,将两个字符串连接
Input
两行字符串
Output
链接后的字符串
Sample Input
123
abc
abc
Sample Output
123abc
HINT
Source
水题。
做这道题正好练练指针。
题意是用一个函数连接两个字符串。问题在于函数的返回值的处理,如果我想获取一个指向字符数组的指针怎么做?如果我只想获取一个指向字符的指针呢?这两种方法都可以做出这道题。
2种做法:
函数返回值都是 char *。
第一种做法是获取一个指向字符变量的指针,这种指针只指向一个字符变量,然后依次输出知道遇到'\0'。
#include <iostream> using namespace std; char* mystrcat(char a[],char b[])
{
char c[];
int i,j;
for(i=;a[i];i++)
c[i] = a[i];
for(j=;b[j];j++)
c[i++] = b[j];
c[i] = '\0';
return c;
}
int main()
{
char a[],b[];
while(cin>>a>>b){
char *c;
c = mystrcat(a,b);
cout<<c<<endl;
}
return ;
}
第二种做法,获得一个指向字符数组的指针,指针指向内存中一整块区域。main函数中需要对这个返回值进行强制转换,转换成(char(*)[1000])这种形式,假定使这个指针变量指向一整块内存。
#include <iostream> using namespace std; char* mystrcat(char a[],char b[]) //连接函数
{
char c[];
int i,j;
for(i=;a[i];i++)
c[i] = a[i];
for(j=;b[j];j++)
c[i++] = b[j];
c[i] = '\0';
return c;
}
int main()
{
char a[],b[];
while(cin>>a>>b){
char (*c)[1000]; //定义一个指向字符数组的指针
c = (char(*)[1000])mystrcat(a,b); //进行强制转换
cout<<*c<<endl;
}
return ;
}
Freecode : www.cnblogs.com/yym2013
最新文章
- 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧
- 微信JSApi支付~坑和如何填坑
- iOS开发之功能模块--本地序列化
- USACO 2015 December Contest, Gold Problem 2. Fruit Feast
- memcached的图形界面监控
- javascript学习第三课引用类型object
- 关于时区的时间的详解,比如UTC\GMT等
- ibernate学习笔记5---实体类或属性名与数据库关键字冲突、hql命名参数、hql实现通用分页
- Pro Android 4 第五章 理解Intent
- Composer生成PHP依赖包
- hdu 4445 Crazy Tank (暴力枚举)
- 201521123011《Java程序设计》第14周学习总结
- C++二维数组、指针、对象数组、对象指针
- Codeforces Round #552 (Div. 3) D题
- 如何理解深度学习中的Transposed Convolution?
- 改写了禁用或启用oracle数据库的约束的存储过程
- C# 解压
- Scanner的概述与String类的构造和使用_DAY12
- 关于Unity中的光照(五)
- 103041000997维护的是周批,按周合并后再考虑最小采购批量、舍入值、然后回写到SAP系统