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

你可能感兴趣的:(字符串)