Eu escrevi um código que precisa exibir os parâmetros principais, mas quando o compilei e digitei "*" o programa mostra minha estrutura de arquivos. O comando no cmd se parece com o seguinte:program.exe 1 2 3 *
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++) printf("%s\n", argv[i]);
return 0;
}
O resultado é:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
E minha pergunta: é possível forçar o programa a imprimir "*" em vez de listar arquivos. Obrigado no conselho
*é convertido "file1 file2 ..."pelo seu shell. Não há nada errado com o seu programa C (embora a inclusão <stdlib.h>não seja necessária). Para impedir que o shell converta a estrela, use aspas:program.exe 1 2 3 "*"
char const* argv[]não está correto. Você não pode inventar formas de main () sozinho, apenas o compilador pode fazer isso. argvé, na verdade, memória de leitura / gravação, mesmo que a gravação não seja a melhor idéia.
*é interpretado pelo shell, não pelo próprio programa. Use\*ou"*"para passar o * para o programa.