Escribí un código que tiene que mostrar los parámetros principales, pero cuando lo compilé y escribí "*", el programa muestra la estructura de mi archivo. El comando en cmd se ve así: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;
}
El resultado es:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
Y mi pregunta: ¿es posible forzar al programa a imprimir "*" en lugar de listar archivos. Gracias en consejos
c
parameters
mingw
main
wildcard-expansion
stasio14
fuente
fuente
*
intérprete lo interpreta, no el programa en sí. Use\*
o"*"
para pasar el * al programa.*
convierte"file1 file2 ..."
. No hay nada malo con su programa C (aunque incluirlo<stdlib.h>
no es necesario). Para evitar que el shell convierta la estrella, use comillas:program.exe 1 2 3 "*"
char const* argv[]
no es correcto. No puede inventar formas de main () por sí mismo, solo el compilador puede hacerlo.argv
en realidad es memoria de lectura / escritura, a pesar de que escribir a menudo no es la mejor idea.Respuestas:
mingw hace que el programa realice una expansión comodín de los parámetros. Agregue lo siguiente a su programa para deshabilitar este comportamiento:
En el mundo de Unix, se espera que el shell realice una expansión comodín.
En el mundo de Windows, la expansión de comodines se deja a la aplicación.
Eso hace que escribir programas portátiles sea complicado. Dado que mingw a menudo se usa para compilar programas que no se escribieron teniendo en cuenta Windows, su biblioteca de tiempo de ejecución C realiza la expansión comodín de los parámetros automáticamente.
a.c
:Pero, mingw proporciona una salida. Agregar lo siguiente a su programa deshabilita este comportamiento:
a.c
:fuente