【发布时间】:2010-09-29 23:53:08
【问题描述】:
好的,所以我有以下代码,它在 C# 中将一个字符串附加到另一个字符串,请注意,这只是一个 示例,因此在 C# 中提供替代字符串连接方法并不是必需的,这只是为了简化示例。
string Data = "";
Data +="\n\nHTTP/1.1 " + Status_code;
Data += "\nContent-Type: " + Content_Type;
Data += "\nServer: PT06";
Data += "\nContent-Length: " + Content_Lengt;
Data += "\nDate: " + Date;
Data += "\n" + HTML;
现在我想在 C 中做同样的事情,我正在尝试按照以下方式进行操作
time_t rawtime;
time ( &rawtime );
char *message = "\n\nHTTP/1.1 ";
message = strcat(message, Status_code);
message = strcat(message, "\nContent-Type: ");
message = strcat(message, Content_Type);
message = strcat(message, "\nServer: PT06");
message = strcat(message, "\nContent-Length: ");
message = strcat(message, Content_Lengt);
message = strcat(message, "\nDate: ");
message = strcat(message, ctime(&rawtime));
message = strcat(message, "\n");
message = strcat(message, HTML);
现在,这给了我一个段错误,我知道为什么,我访问并读取了我不应该访问的内存。但问题是,我该如何解决?我可以使用 string.h 并像在 C# 中那样做吗?
【问题讨论】:
-
除此之外,所以不是“回复”——但 C# 代码效率也很低;要么使用单个连接(
a + b + c + d + e,编译器读取为string.Concat(a,b,c,d,e)),要么使用 StringBuilder。 -
请注意,通过标记 C#,所有那些 C-but-not-C# 程序员都会错过您的问题,因为我认为 C# 是一个流行的 Ignored Tag。
-
@Paul - 确实;另外,你会得到很多 C# 但不是 C 的程序员(比如我),他们阅读了它,但除了猜测之外真的无能为力。
-
我明白了,谢谢。但是,C# 代码不是问题。正如我在之前的评论中所说的那样,这只是一种简单的方式来展示我想在 C 中做什么。如果我使用了 StringBuilder,那么这个问题就不那么具有教学性了。
-
我不同意,实际上没有使用 StringBuilder 将焦点转移到不是实际问题的事情上。