ytu 1052: 写一函数,将两个字符串连接(水题,指针练习)

1052: 写一函数,将两个字符串连接

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 343   Solved: 210
[ Submit][ Status][ Web Board]

Description

写一函数,将两个字符串连接

Input

两行字符串

Output

链接后的字符串

Sample Input

123 abc

Sample Output

123abc

HINT

 

Source

 
  水题。
  做这道题正好练练指针
  题意是用一个函数连接两个字符串。问题在于函数的返回值的处理,如果我想获取一个指向字符数组的指针怎么做?如果我只想获取一个指向字符的指针呢?这两种方法都可以做出这道题。
  2种做法
  函数返回值都是 char *。
  第一种做法是获取一个指向字符变量的指针,这种指针只指向一个字符变量,然后依次输出知道遇到'\0'。
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 char* mystrcat(char a[],char b[])
 6 {
 7     char c[1000];
 8     int i,j;
 9     for(i=0;a[i];i++)
10         c[i] = a[i];
11     for(j=0;b[j];j++)
12         c[i++] = b[j];
13     c[i] = '\0';
14     return c;
15 }
16 int main()
17 {
18     char a[1000],b[1000];
19     while(cin>>a>>b){
20         char *c;
21         c = mystrcat(a,b);
22         cout<<c<<endl;
23     }
24     return 0;
25 }

  

  第二种做法,获得一个指向字符数组的指针,指针指向内存中一整块区域。main函数中需要对这个返回值进行强制转换,转换成(char(*)[1000])这种形式,假定使这个指针变量指向一整块内存。

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 char* mystrcat(char a[],char b[])   //连接函数
 6 {
 7     char c[1000];
 8     int i,j;
 9     for(i=0;a[i];i++)
10         c[i] = a[i];
11     for(j=0;b[j];j++)
12         c[i++] = b[j];
13     c[i] = '\0';
14     return c;
15 }
16 int main()
17 {
18     char a[1000],b[1000];
19     while(cin>>a>>b){
20         char (*c)[1000];    //定义一个指向字符数组的指针
21         c = (char(*)[1000])mystrcat(a,b);   //进行强制转换
22         cout<<*c<<endl;
23     }
24     return 0;
25 }

 

Freecode : www.cnblogs.com/yym2013

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值