I'm trying to put a char on the begining of a string but when I print the final string the result is:
Process finished with exit code -1073741819 (0xC0000005)
This is my code:
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 is string input that i give to the method.
To use strcat the destination array shall contain a string. Your array letter does not contain a string.
You could write for example
letter[0] = 'a';
letter[1] = '\0';
strcat( letter, output );
or just
letter[0] = 'a';
strcpy( letter + 1, output );
Pay attention to that it seems this statement
output=malloc(strlen(output)+2);
produces a memory leak because the previously allocated memory pointed to by the pointer output was not freed.
The task could be done without allocating a memory for an auxiliary array. You could use the standard function realloc to reallocate the original array pointed to by output. And then move the stored string using memmove to the right one position and then insert the character 'a' in the first position.
Here is a demonstrative program.
#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;
}
The program output is
Hello
User contributions licensed under CC BY-SA 3.0