如何在C中的字符串开头添加字符?
我试图在字符串的开头添加一个字符,但当我打印最后一个字符串时,结果是: 流程结束,退出代码为1073741819(0xC0000005) 这是我的代码:如何在C中的字符串开头添加字符?,c,char,dynamic-memory-allocation,c-strings,C,Char,Dynamic Memory Allocation,C Strings,我试图在字符串的开头添加一个字符,但当我打印最后一个字符串时,结果是: 流程结束,退出代码为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",o
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[0] = 'a';
letter[1] = '\0';
strcat( letter, output );
或者只是
letter[0] = 'a';
strcpy( letter + 1, output );
请注意,这似乎是一种说法
output=malloc(strlen(output)+2);
产生内存泄漏,因为指针输出指向的先前分配的内存未被释放
该任务可以在不为辅助阵列分配内存的情况下完成。您可以使用标准函数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;
}
letter
需要以null结尾,以便正确使用strcat(letter,output)
Hello