То, что я хочу, чтобы моя программа заключалась в том, чтобы прочитать входной текст от пользователя, обозначить эту строку с пробелом, являющимся разделителем, и сохранить каждый токен в массиве char *, который затем возвращаться.Array of char * in C
вот фрагмент кода, который я пытаюсь заставить его работать правильно:
typedef char* String;
String* split(char* cmd)
{
char* param;
char tmp[128];
String* result = (String*) malloc(10*sizeof(String));
memset(result,NULL,10);
strcpy(tmp,cmd);
param = strtok(tmp," ");
int index = 0;
while(param && index < sizeof(result)/sizeof(*result))
{
result[index] = (char*) malloc(strlen(param));
strcpy(result[index],param);
param = strtok(NULL," ");
index++;
}
}
Где ЦМД строку, я tokenizing и результат является массив, который будет содержать каждый маркер.
Этот фрагмент кода приводит к ошибкам при попытке перебрать возвращенного результата, используя простой цикл (возникает ошибка сегментации)
String* splittedCmd = split(command);
int i;
for(i=0;i<10;i++)
{
if(splittedCmd[i] != NULL)
printf("%s\n",splittedCmd[i]);
}
В чем вопрос? – JAM
Подумайте о локальных переменных и времени жизни. Подумайте о динамическом распределении, и почему у вас его нет. Подумайте об использовании 'strncpy' вместо этого. Подумайте о том, чтобы обозначить это как «домашнюю работу». И подумайте о переходе на C++. –