C 将字符附加到没有值的字符串

C 将字符附加到没有值的字符串,c,C,在我启动的以下方法中,如何将char附加到没有初始值的字符串中: void append(char a) { const char *str; char *ret = malloc (strlen(str)+2); strncpy(str,strlen(str),ret); ret[strlen(str)-2] = a; ret[strlen(str)-1] = 0; printf("%s", str); } 我对其他问题尝试了一些不同的答案

在我启动的以下方法中,如何将char附加到没有初始值的字符串中:

void append(char a) {
    const char *str;

    char *ret = malloc (strlen(str)+2);
    strncpy(str,strlen(str),ret);
    ret[strlen(str)-2] = a;
    ret[strlen(str)-1] = 0;

    printf("%s", str);
}

我对其他问题尝试了一些不同的答案,但没有一个有效,请帮助。

由于指针
str
未初始化,因此无法向其指向的内容添加字符。什么是有意义的取决于你下一步要做什么。由于不从函数返回值,因此无法访问附加了
a
的字符串,除非
append
调用其他函数。

char*str不是字符串。它是一种助记符,表示*str将给您一个假定为字符的值

str
是一个随机指向的指针。首先让它指向分配的一堆内存。
做一些类似于-
str=malloc(100)
然后执行一个
*(str+1)=a
然后执行一个
*(str+2)='\0'
以NULL终止字符串。

类似以下操作如何:

char * append(char a, const char * str)
{
    char *ret = malloc (strlen(str)+2);
    strncpy(str,strlen(str),ret);
    ret[strlen(str)-2] = a;
    ret[strlen(str)-1] = 0;
    return ret;
}

你不能
str
无效。其中的逻辑没有意义
str
仅具有
append
的范围,那么您打算如何使用它?为
str
分配至少两个字节,设置
str[0]=a;str[1]=0。我的做法有所不同,并更新了我原来的帖子。为什么我的错误给了我?