使用C在字符串中添加一个点

时间:2011-09-16 01:29:54

标签: c

我想添加“/。”到文件名,例如,
我有文件名“abc”,我想得到一个名字“abc / .abc”,
怎么用C做? strcpy(“/。”,name)和strcat(“/。”,name)返回分段错误。

由于

2 个答案:

答案 0 :(得分:2)

strcat的第一个参数必须是可修改的字符串,并且分配了足够的空间来保存结果字符串和终止零字节。 strcpy的第一个参数必须指向已分配的可修改的内存,并且有足够的空间来保存字符串的结果副本和终止的零字节。在两个示例中,您都传递了一个常量作为第一个参数。

以下是一些示例代码,可以执行您想要的操作:

char* SlashDotter(const char* in)
{ // turn <string> into <string>/.<string> -- caller must free returned string
 char *out = malloc(strlen(in)*2 + 3); // two copies of input, /, ., and nul
 strcpy(out, in);
 strcat(out, "/.");
 strcat(out, in);
 return out;
}

答案 1 :(得分:1)

asprintf()可用于分配字符串并填充其内容。

在Linux系统上“man asprintf”将为您提供该功能如何工作的说明,否则使用谷歌从其他地方获取帮助。