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

posted @ 2014-02-25 21:05  Freecode#  阅读(1629)  评论(0编辑  收藏  举报