如何在 C 中的字符串开头添加一个字符?

How can I add a char on the begining of a string in C?

我试图在字符串的开头放置一个字符,但是当我打印最终字符串时,结果是:

Process finished with exit code -1073741819 (0xC0000005)

这是我的代码:

char * letter=malloc(strlen(output)+2);
letter[0]='a';
strcat(letter,output);
output=malloc(strlen(output)+2);
strcpy(output,letter);
free(letter);
printf("\n%s",output);

output 是我提供给该方法的字符串输入。

要使用strcat,目标数组应包含一个字符串。您的数组 letter 不包含字符串。

你可以这样写

letter[0] = 'a';
letter[1] = '[=10=]';
strcat( letter, output );

或者只是

letter[0] = 'a';
strcpy( letter + 1, output );

注意好像是这个说法

output=malloc(strlen(output)+2);

产生内存泄漏,因为指针 output 指向的先前分配的内存未被释放。

无需为辅助数组分配内存即可完成该任务。您可以使用标准函数 realloc 重新分配 output 指向的原始数组。然后使用memmove将存储的字符串向右移动一个位置,然后在第一个位置插入字符'a'

这是一个演示程序。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) 
{
    size_t n = 5;
    char *s = malloc( n * sizeof( char ) );
    strcpy( s, "ello" );
    
    char *tmp = realloc( s, ( n + 1 ) * sizeof( char ) );
    
    if ( tmp != NULL )
    {
        s = tmp;
        memmove( s + 1, s, n );
        s[0] = 'H';
        ++n;
    }
    
    puts( s );
    
    free( s );
    
    return 0;
}

程序输出为

Hello