Я пытаюсь разобрать входную строку в команду и массив из аргументов строк.Ошибка семантизации: 11 при попытке разобрать строку
У меня возникла проблема с использованием strtok и strcpy, я думаю, что моя строка не имеет нулевого завершения, что приводит к ошибке seg.
#include <stdio.h>
#include <string.h>
#define delims " \t\r\n"
int main() {
char input[] = "ls -a -f";
char *buffer;
char command[256];
char arguments[256][256];
int i = 0, j;
buffer = strtok(input, delims);
strcpy(command, buffer);
printf("Command: %s\n\r", command);
while (buffer != NULL)
{
buffer = strtok(NULL, delims);
strcpy(arguments[++i], buffer);
}
buffer = strtok(NULL, delims);
for (j = 0; j < i; ++i)
{
printf("Argument[%d]: %s", j, arguments[j]);
}
return 0;
}
Выходной ток:
Command: ls
Segmentation fault: 11
Ожидаемый результат:
Command: ls
Argument[0]: -a
Argument[1]: -f
Я не претендую быть очень хорошо с C, поэтому любые указатели в правильном направлении было бы чрезвычайно полезно ,
Это не как структура цикла. Изменить while (buffer! = NULL) до while (strtok (NULL, delims)) – bruceg
'strcpy (arguments [++ i], buffer);' - >> 'strcpy (arguments [i ++], buffer);' – wildplasser
'while (buffer! = NULL) { buffer = strtok (NULL, delims); strcpy (аргументы [++ i], буфер); } buffer = strtok (NULL, delims); '->' while ((buffer = strtok (NULL, delims))! = NULL) {strcpy (arguments [i ++], buffer); } ' – BLUEPIXY