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.