ytu 1052: 写一函数,将两个字符串连接(水题,指针练习)
1052: 写一函数,将两个字符串连接
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 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