Enviado em 03/12/2015 - 23:01h
Como eu passo uma string pro meu programa pela linha de comando de forma que ela inclua o caractere espaço? Tentei usar aspas na string mas só lê os caracteres até o espaço e ignora o resto.
Enviado em 03/12/2015 - 23:01h
Enviado em 04/12/2015 - 02:35h
meu_programa "Este argumento contém espaços" a \ b\ c 'Este contém uma ( ) tabulação'o shell eventualmente vai executar algo com efeito semelhante a
char **argv;e isso vai fazer com que o seu programa receba valores correspondentes nos argumentos argc e argv da função main(), fazendo a assertiva abaixo verdadeira.
argv=malloc(7*sizeof(*argv)); // Porque a linha de comando tem 6 partes
argv[0]="meu_programa";
argv[1]="Este argumento contém espaços"; // 1, 2 e 3 espaços, respectivamente, como na linha de comando
argv[2]="a";
argv[3]=" ";
argv[4]="b c";
argv[5]="Este contém uma (\t) tabulação";
argv[6]=NULL;
execvp("meu_programa", argv);
assert(NOTA: Para conseguir produzir o caráter de tabulação da linha de comando do bash (e eventualmente outros shells interativos), você provavelmente terá de usar Control-V antes de apertar a tecla Tab. O Control-V faz com que o próximo caráter recebido seja tomado literalmente, eventualmente perdendo sua função de caráter de controle.
argc==6 &&
strcmp(argv[0], "meu_programa")==0 &&
strcmp(argv[1], "Este argumento contém espaços")==0 &&
strcmp(argv[2], "a")==0 &&
strcmp(argv[3], " ")==0 &&
strcmp(argv[4], "b c")==0 &&
strcmp(argv[5], "Este contém uma (\t) tabulação")==0 &&
argv[6]==NULL
);
Entre na sua conta para responder.