65,187
社区成员




int bufLen = 0;
int bufIndex = 0;
int ulen = 0;
for(int i = 0;i < count;i++)
{
char *str = GetString(i);
bufLen = bufLen + strlen(str);
}
char *strBuf = (char *)malloc(bufLen * sizeof(char));
memset(strBuf, 0, strlen(strBuf));
for(int i = 0;i < count;i++)
{
char *str = GetString(i);
ulen = strlen(str);
ulen++;
memcpy(&strBuf[bufIndex], str, ulen - 1);
strBuf[bufIndex + ulen - 1] = '\n';
bufIndex += ulen;
}
//strBuf[strlen(strBuf) - 1] = '\0';
free(strBuf);
for(int i = 0;i < count;i++)
{
char *str = GetString(i);
bufLen = bufLen + strlen(str)+1;//mark
}
char *strBuf = (char *)malloc(bufLen * sizeof(char));
memset(strBuf, 0, strlen(strBuf));
for(int i = 0;i < count;i++)
{
char *str = GetString(i);
ulen = strlen(str);
ulen++;
memcpy(&strBuf[bufIndex], str, ulen - 1);
strBuf[bufIndex + ulen - 1] = '\0';//mark
bufIndex += ulen;
}
memcpy(&strBuf[bufIndex], str, ulen - 1);//mark,一维数组当二维数组用?
#pragma once
#include <string.h>
class StringArray
{
public:
StringArray(int strlen);
StringArray();
~StringArray(void);
void AddString(const char *str);
char *GetString(int index);
int GetLength();
void initArray(int length);
void PrintArray();
int GetCount();
char *WarpResultBuf();
private:
int length;
int count;
char **strings;
};
#include "StdAfx.h"
#include "StringArray.h"
StringArray::StringArray(int strlen)
{
length = strlen;
strings = (char **)malloc(length * sizeof(char *));
count = 0;
}
StringArray::StringArray()
{
count = 0;
length = 0;
}
void StringArray::initArray(int length)
{
this->length = length;
strings = (char **)malloc(length * sizeof(char *));
}
StringArray::~StringArray(void)
{
int i = 0;
for(int i = 0;i < length;i++)
{
if(strings[i] != NULL)
{
free(strings[i]);
strings[i] = NULL;
}
}
if(strings != NULL)
{
free(strings);
strings = NULL;
}
}
void StringArray::AddString(const char *str)
{
if(length == 0)
return;
if(str != NULL && count < length)
{
char *temp = (char *)malloc((strlen(str) + 1) * sizeof(str));
memcpy(temp, str, strlen(str) + 1);
strings[count++] = temp;
}
}
char *StringArray::GetString(int index)
{
if(length == 0)
return NULL;
if(index < length)
{
return strings[index];
}
return NULL;
}
int StringArray::GetLength()
{
return length;
}
void StringArray::PrintArray()
{
for(int i = 0;i < length;i++)
{
}
}
int StringArray::GetCount()
{
return count;
}
char *StringArray::WarpResultBuf()
{
int bufLen = 0;
int bufIndex = 0;
int ulen = 0;
for(int i = 0;i < count;i++)
{
char *str = GetString(i);
bufLen = bufLen + strlen(str);
}
char *strBuf = (char *)malloc(bufLen * sizeof(char));
memset(strBuf, 0, strlen(strBuf));
for(int i = 0;i < count;i++)
{
char *str = GetString(i);
ulen = strlen(str);
ulen++;
memcpy(&strBuf[bufIndex], str, ulen - 1);
strBuf[bufIndex + ulen - 1] = '\n';
bufIndex += ulen;
}
strBuf[strlen(strBuf) - 1] = '\0';
return strBuf;
}