如何在 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
我试图在字符串的开头放置一个字符,但是当我打印最终字符串时,结果是:
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