Во вложенном цикле вы выбрали все символы после пробела, пока не дойдете до \ n.Но когда процесс завершен, вы возвращаетесь к первому циклу, и значение i не изменилось, и оно продолжается от следующего символа после пробела снова, и это может существовать в другом месте в строке, поэтому вы повторите строку несколько раз.раз для каждого пробела в строке!
Поэтому из-за char resultat[4][256]
вы можете достичь предела и превысить границу массива.
Вы можете обновить значение i после завершения строкиi=x
:
for (i=0;i<256;i++)
{
if (line[i]==' ')
{
j=0;
for (x=i+1; x<256 && line[x] != '\n';x++)
{
resultat[line_num][j]=line[x];
j++;
}
resultat[line_num][j] = '\0';
line_num++;
i=x;
}
}
Кстати, на самом деле мне совсем не понравился ваш код!И я предлагаю просто патч для исправления вашего кода, но, безусловно, есть гораздо лучший способ написать код для того, что вы хотите сделать.