переключателя с кодом У меня есть ниже:Сегментации ошибка неисправности с с простой констатацией
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int MAX_INPUT_SIZE = 200;
volatile int running = 1;
while(running) {
char input[MAX_INPUT_SIZE];
char *tokens[100];
const char* cmds[] = {"wait", "pwd", "cd", "exit"};
char *cmdargs[100];
printf("shell> ");
fgets(input, MAX_INPUT_SIZE, stdin);
//tokenize input string, put each token into an array
char *space;
space = strtok(input, " ");
tokens[0] = space;
int i = 1;
while (space != NULL) {
space = strtok(NULL, " ");
tokens[i] = space;
++i;
}
//copy tokens after first one into string
strcpy((char*)cmdargs, ("%s ",tokens[1]));
for (i = 2; tokens[i] != NULL; i++) {
strcat((char*)cmdargs, " ");
strcat((char*)cmdargs, tokens[i]);
}
//compare tokens[0] to list of internal commands
int isInternal = -1;
for (i = 0; i < 4; i++) {
if (strcmp(tokens[0], cmds[i]) == 0) {
isInternal = i;
}
}
char *wd[200];
switch(isInternal) {
case 0:
//wait
printf("WAIT \n");
break;
case 1:
//pwd
printf("PWD \n");
break;
case 2:
//cd
printf("CD \n");
break;
case 3:
//exit
printf("EXIT" \n");
break;
case -1:
//not internal command, continue
break;
}
/*
for (i = 0; tokens[i] != NULL; i++) {
printf("%s ", tokens[i]);
}
printf("\n");
*/
}
}
НКУ дает мне ошибку, которая говорит segmentation fault (core dumped)
всякий раз, когда я вхожу вход на все, и я не понимаю, что происходит , Есть идеи?
Я довольно уверен, что это как-то связано с оператором switch, но я не уверен, где проблема, так как все коммутаторы распечатывают строку отладки.
Примечание: Я получаю ошибку segmentation fault (core dumped)
с входами: wait
, pwd
, cd
, exit
.
'зЬгсру ((символ *) cmdargs, ("% S", маркеры [1]));' не делать то, что вы думаете, что делает , NB - Я не знаю, что вы думаете. –
Что происходит со всеми приведениями? –
@CarlNorum: см. Http://stackoverflow.com/questions/18809734/s-string-not-printing-space-after-string для предполагаемого эффекта. flexcalibur6, по крайней мере, пройти весь свой код, когда вам будет предоставлена помощь в том, как его исправить. – Mat