用函数解决指针数组的问题

编写函数,把一个指针数组中的n个字符串连接起来,生成一个大字符串,在主函数中打印该字符串,不使用string.h头文件。

将各字符串写入主字符串尾部就行了,定义一个独立的连接函数

#include <iostream>
using namespace std;
void stringcat(char *s,char *p)
{
    while(*s != 0)
        s++;
    do
    {
        *s++ = *p++;
    }while(*p!=0);
}

int main()
{
    char str[10000]= {0};
    char *s[100];
    int n,i;
    cin>>n;
    for(i=0;i<n;i++)
        s[i] = new char[100];
    getchar();
    for(i=0;i<n;i++)
        gets(s[i]);
    for(i=0;i<n;i++)
        stringcat(str,s[i]);
    puts(str);

  return 0;
}
#include<iostream>
#include<math.h>
#include <algorithm> 
using namespace std;
#pragma warning(disable:4996)
int main() {
    int number =1;
    char* get = new char[100];
    char** word = NULL;
    char* sorted = NULL;
    cin.getline(get, 100);
    for (int i = 0; i < strlen(get); i++) {
        if (get[i] == ' ') {
            number++;
        }
    }
    word = new char* [number];
    sorted = new char [number];
    int count = 0;
    for (int i = 0, j = 0; i < strlen(get); i++) {
        if (i == 0) {
            word[j] = new char[100]{ 0 };
        }
        // 这是存放单词的数组
        if (get[i] == ' ') {
        
            count = 0;
            i++,j++;
            if (j == number) {
                break;
            }
            word[j] = new char[100]{ 0 };
        }
        word[j][count++] = get[i];
    }
    cin >> sorted;
    
    for (int i = 0; i < number; i++) {
        cout << word[sorted[i]-48]<<" ";
    }
//
}

word就是指针数组

C代码


#include <stdio.h>
#include <stdlib.h>
char* fun(char* a[],int n)
{
    int i=0,j=0;
    int len=0;
    char* p,*t;
    for (i=0;i<n;i++)
    {
        t = a[i];
        while(*t != '\0')
        {
            len++;
            t++;
        }
    }
    p = (char*)malloc(len+1);
    for (i=0;i<n;i++)
    {
        t=a[i];
        while(*t != '\0')
        {
            p[j++]=*t;
            t++;
        }
    }
    p[j]=0;
    return p;
}

int main()
{
    char* a[] = {"hello","world","good"};
    char* p = fun(a,3);
    printf("%s",p);
    free(p);
    p = 0;
    return 0;
}

C++代码:

#include <iostream>
using namespace std;
char* fun(char* a[],int n)
{
    int i=0,j=0;
    int len=0;
    char* p,*t;
    for (i=0;i<n;i++)
    {
        t = a[i];
        while(*t != '\0')
        {
            len++;
            t++;
        }
    }
    p = new char[len+1];
    for (i=0;i<n;i++)
    {
        t=a[i];
        while(*t != '\0')
        {
            p[j++]=*t;
            t++;
        }
    }
    p[j]=0;
    return p;
}

int main()
{
    char* a[] = {"hello","world","good"};
    char* p = fun(a,3);
    cout << p<<endl;
    delete[] p;
    p = 0;
    return 0;
}

创建一个大数组和一个小数组,把小数组中的元素通过循环存到大数组中就可以了