c - 在没有函数帮助的情况下将 char 添加到字符串

标签 c arrays string char append

对于我的程序,我需要在不使用标准库或 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

最佳答案

在不给出答案的情况下,因为这听起来像是类作业,下面是您想要在高层次上做的事情:

  1. 确定字符串的长度,即找到'\0'结束符。
  2. 分配一个长一个字符的新字符数组。
  3. 将旧字符串复制到新字符串。
  4. 在末尾添加新角色。
  5. 确保新字符串末尾有一个 '\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/

相关文章:

java - 如何编写java程序来处理连续的字符输入

c - 如何在不转换为字符串的情况下一次传递多个整数

c - 函数 fork()

c - brainfuck 解释器的优化

ios - 从数组中选择随机结构

arrays - 获取数组中恰好低于匹配值的元素

php - 列出php文件中所有定义的常量

c++ - WSARecvFrom 阻塞

c - 应为 ‘int *’,但参数的类型为 ‘int (*)[(long unsigned int)(n)]’

c++ - 不推荐从字符串常量到 'char*' 的转换