对于我的程序,我需要在不使用标准库或 IO 函数的情况下将 char(char) 添加到 string(char *)。 例如:
char *s = "This is GOO";
char c = 'D';
s = append(s, c);
和 s 会产生字符串“This is GOOD”。 是否有一些正确的方法来操纵数组以实现这一目标? 同样,从字符数中生成字符串就足够了。 我很确定我可以使用 malloc,但不是肯定的...
char * app(char* s, char c){
char *copy;
int l = strlen_(s);
copy = malloc(l+1);
copy = s;
copy[l] = c;
copy[l+1] = '\0';
return copy;
}
不能使用strcpy
最佳答案
在不给出答案的情况下,因为这听起来像是类作业,下面是您想要在高层次上做的事情:
- 确定字符串的长度,即找到
'\0'
结束符。 - 分配一个长一个字符的新字符数组。
- 将旧字符串复制到新字符串。
- 在末尾添加新角色。
- 确保新字符串末尾有一个
'\0'
终止符。
(如果您被允许修改现有字符串,那么您可以跳过第 2 步和第 3 步。但是在您的示例中,char *s = "This is GOO"
具有 s
指向不可修改的字符串文字,这意味着您不能就地修改它,必须使用副本。)
对您发布的代码的评论:
char * app(char* s, char c) {
char *copy;
int l = strlen_(s);
copy = malloc(l+1); /* should be +2: +1 for the extra character and +1 for \0 */
copy = s; /* arrays must be copied item by item. need a for loop */
copy[l] = c;
copy[l+1] = '\0';
return copy;
}
关于c - 在没有函数帮助的情况下将 char 添加到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15400331/