Ваша программа не компилируется, вы предполагаете, что можете получить доступ к main локальной переменной j из task , d неизвестно и т. д., и вы используете strcpy , тогда как источник и назначение могут перекрываться и устареть получает
Предложение с использованием strchr , strrchr и memmove :
#include <stdio.h>
#include <string.h>
int main()
{
puts("Text : ");
char s[256];
if (fgets(s, sizeof(s), stdin) == NULL)
return -1;
/* may be remove \n from s */
char * p1 = strchr(s, '(');
if (p1 == NULL)
fprintf(stderr, "'(' is missing\n");
else {
char * p2 = strrchr(p1+1, ')');
if (p2 == NULL)
fprintf(stderr, "')' is missing\n");
else {
memmove(p1, p2 + 1, strlen(p2 + 1) + 1);
puts(s);
}
}
return 0;
}
Компиляция и исполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra p.c
pi@raspberrypi:/tmp $ ./a.out
Text :
aze(qsd)wxc
azewxc
Обратите внимание, что все между первым '(' и последним ')' удаляется, даже если существует более одного '(' или ')':
pi@raspberrypi:/tmp $ ./a.out
Text :
aze((qsd)wxc
azewxc
pi@raspberrypi:/tmp $ ./a.out
Text :
aze(qsd)iop)wxc
azewxc