关于字符串连接
请教各位大大一个问题,我现在要将一组字符串保存起来。字符串格式如下:
同学一:[start,finish].其中start和finish是两个int型变量。他们在一个循环里面,也就是说这个字符串会出现多次,我想把每次出现的这个字符串都保存起来应该怎么实现。用数组还是什么的?
我是定义的一个char*数组buff,
buff[0]="同学一:"+"["+start+","+finish+"]"
我这种拼接方法明显不对。但是我不知道应该怎么实现,麻烦各位教教我
[解决办法]
做作业咯
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagString
{
char str[1];
}string;
string* create(char const* str)
{
size_t len = strlen(str);
string* s = (string*)malloc(sizeof(string)+len);
if(s)
{
strcpy(s->str, str);
}
return s;
}
string* concate(string * a, char const* b)
{
if(a)
{
size_t len = strlen(a->str) + strlen(b);
string* s = (string*)realloc(a, sizeof(string)+len);
if(s)
{
strcat(s->str, b);
}
else
{
free(a);
}
return s;
}
else
{
return create(b);
}
}
string* toString(char const* lable, int index, int start, int end)
{
char buf[32];
string* s = create(lable);
sprintf(buf,"%d", index);
s = concate(s, buf);
s = concate(s, ": [");
sprintf(buf,"%d", start);
s = concate(s, buf);
s = concate(s,",");
sprintf(buf,"%d", end);
s = concate(s, buf);
s = concate(s, "]");
}
typedef struct tagRecord
{
int start;
int end;
}record;
int main()
{
enum
{
N = 3
};
record rs[N] ={ {1, 5}, {6, 10}, {11, 20}};
string* ss[N] = {0};
int i = 0;
for(i = 0; i < N; ++i)
{
ss[i] = toString("同学", i+1, rs[i].start, rs[i].end);
}
for(i = 0; i < N; ++i)
{
puts(ss[i]->str);
}
for(i = 0; i < N; ++i)
{
free(ss[i]);
}
return 0;
}
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string msg_format(int i, int start, int finish)
{
stringstream ss;
ss << "同学" << i << ": [" << start << ", " << finish << "]";
return ss.str();
}
int main(int argc, char **argv)
{
string stu[10];
stu[1] = msg_format(1, 30, 50);
stu[2] = msg_format(2, 70, 90);
for (int i = 1; i <= 2; ++i)
{
cout << stu[i] << endl;
}
return 0;
}