Я создал программу, которая предположительно полностью оправдывает текст, который вводится в класс, за исключением случаев передачи слов на вывод, отображаются ошибки, и я не уверен, почему, но это заканчивается тем, что вызывает ошибка сегментации при запуске программы. Что вызывает эту ошибку и как я могу это исправить?C Сбой сегментации с использованием strtok
void format_text(int * option_stats, unsigned width, char * text)
{
int x = 0, y = 0, spaces = 0, remain = 0, j = 0;
char* words, output;
char temp[200] = {" "};
words = strtok(text, " ");
while (words != NULL)
{
if (y + strlen(words) < width)
{
strcpy(temp, words);
strcat(temp, " ");
y += strlen(words) +1;
spaces += 1;
words = strtok(NULL, " ");
}
else if(y + strlen(words) == width)
{
strcpy(temp, words);
printf("%s\n", temp);
y = 0;
spaces = 0;
}
else if(spaces > 1)
{
remain = width - (y - 1);
j = remain % (spaces - 1);
remain = (remain-j)/(spaces-1);
output = strtok(temp, " ");
while (output != NULL)
{
printf("%c", output);
if(j > 0)
{
printf(" ");
j--;
}
output = strtok(NULL, " ");
y = 0;
spaces = 0;
words = strtok(NULL, " ");
}
}
x += (strlen(words) + 1);
}
}
Привет. Вы должны использовать отладчик, чтобы определить, какая строка вызывает seg-fault, а затем отступить оттуда, проверив текущие значения переменных и т. Д. –
Какая строка показывает segfault? Проложить видимый длинный код, который, по-видимому, является частью программы, не помогает, просто покажите, где вы получаете эту ошибку? – 0decimal0