65,186
社区成员




#include <iostream>
#include <string>
char **reBulit(char **argv, int &argc)
{
static char temp[1024] = "";
memset(temp, 0, 1024);
sprintf(temp, "%s%s", argv[argc-1], argv[argc-2]);
argv[argc] = temp1;
++argc;
return argv;
}
void main()
{
char *argv[10] = {"str1", "str2", "str3"};
int argc = 3;
reBulit(argv, argc);
reBulit(argv, argc);
}
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
#include <stdio.h>
#define MAXARGLEN 80
#define MAXARGCNT 10
void reBulit(char **argv, int &argc)
{
static char temp[1024] = "";
if (argc>=2) _snprintf(temp,1024-1, "%s%s", argv[argc-1], argv[argc-2]);
if (argc<MAXARGCNT) {
strncpy(argv[argc],temp,MAXARGLEN-1);
argv[argc][MAXARGLEN-1]=0;
++argc;
}
}
void show(char **argv, int argc) {
for (int i=0;i<argc;i++) {
printf("%s ",argv[i]);
}
printf("\n");
}
int main() {
int i;
char **argv;
argv=(char **)malloc(MAXARGCNT*sizeof(char *));
for (i=0;i<MAXARGCNT;i++) argv[i]=(char *)malloc(MAXARGLEN*sizeof(char));
strcpy(argv[0],"str0");
strcpy(argv[1],"str1");
strcpy(argv[2],"str2");
int argc = 3;
show(argv, argc);
reBulit(argv, argc);
show(argv, argc);
reBulit(argv, argc);
show(argv, argc);
for (i=0;i<MAXARGCNT;i++) free(argv[i]);
free(argv);
return 0;
}
//str0 str1 str2
//str0 str1 str2 str2str1
//str0 str1 str2 str2str1 str2str1str2
//