编写函数,把一个指针数组中的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;
}
创建一个大数组和一个小数组,把小数组中的元素通过循环存到大数组中就可以了