Я пытаюсь сделать токенизацию введенных пользователем команд для оболочки. Программа работает, но я не думаю, что она заполняет массив параметров, который я объявил. Мне жаль, если мне кажется, что у меня нет тонны информации, поскольку я изучаю это как это сделать, но я не уверен, почему это не заполняет параметр. Любая помощь была бы признательна, и если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать.Пытается использовать strtok() для функции оболочки в C
#include "HeaderFile.h"
#include <stdio.h>
#include <stdlib.h>
#define token_delimiter " \n\r"
char **shell_read(char *line, char **param){
line = NULL;
ssize_t size = 0;
getline(&line, &size, stdin);
//printf("%s", line);
int i = 0;
char *line_token;
line_token = strtok(line, token_delimiter);
printf("%s", line_token);
for(i=1; line_token!=NULL; i++){
param[i] = line_token;
line_token = strtok(NULL, token_delimiter);
}
param[0] = NULL;
return(param);
}
Как вы выделения 'param'? О, и не пишите 'return (param)', 'return' не является funtion. У вас также есть утечка памяти, вам нужно 'free()' 'line'. –
просто добавил следующее: «param», используя _param = malloc (buffer * sizeof (char *)); _ где _buffer = 64; _. также исправлена проблема с возвратом и утечка памяти –
«Возвращение» было нормально, это не проблема. Но это выглядит просто уродливо. –