Quina diferència hi ha entre la línia de comandes Arguments i la funció scanf en llenguatge C?


Resposta 1:
  • Com un programa que utilitza arguments de línia d'ordres es codifica en C s'explica bé en altres respostes. Permeteu-me que us ho expliqui simplement com funciona. No oblideu C per un temps i feu un exemple. Suposem que heu instal·lat MS-Office al vostre ordinador. Ara, quan feu clic amb el botó dret a un fitxer docx del vostre PC, us oferirà aquest tipus d’opcions: Obrir amb Microsoft Word 2010Now, quan feu clic a l’opció Obre amb Microsoft Word 2010, la ruta del fitxer docx es passa a MSWORD Fitxer .exe (que es troba a la carpeta C: \ Program Files quan vau fer la configuració del programari) com a argument de línia d'ordres (CLA). Però si no hi hagués arguments en línia de comandaments, probablement primer obríeu Microsoft Word 2010 ( que en realitat no és sinó MSWORD.exe), després feu clic a Fitxer-> Obrir. A continuació, localitzeu el fitxer .docx i després l’obriu. Així, l’argument de la línia d’ordres no llegeix les entrades. Indica al programa que s'inicialitzi amb alguna cosa que se li passa a través de la línia d'ordres arguments.scanf es pot utilitzar en funció de les condicions, diverses vegades en un programa. Els arguments de la línia de comandaments només es poden proporcionar una vegada, en el moment d’inicialitzar el programa. Feu un altre exemple següent:
Escriviu un programa per llegir un número de l’usuari. Si el número és el mateix que s’emmagatzema en alguna taula de la base de dades, el programa hauria de llegir 3 números més; en cas contrari, llegeix 7 números més. Si el dels tres números és el mateix que es guarda en alguna taula de la base de dades, el programa hauria de llegir 5 números més; en cas contrari, hauria de llegir 9 números més.

Ara digueu-me, al programa anterior, si voleu utilitzar el CLA en lloc de la scanf, quants arguments en línia de comandes acceptareu en la funció principal ()?


Resposta 2:

1. Argument de la línia de comandes significa que s'ha passat al programa quan es truca des del CLI.

Per exemple, suposant que estic compilant el meu programa C:

$ clang helloworld.c

El programa és clang i l'argument és helloworld.c

2. scanf és interactiu. Els arguments de la línia de comandaments no ho són.

Les entrades interactives suposen que l'usuari l'utilitza de forma interactiva, cosa que pot no ser el cas (per disseny Unix: hauria de funcionar fàcilment amb altres programes). Un usuari pot fer-ho directament ...

$ clang
Introduïu el nom de fitxer: helloworld.c

Però per a un programa, això és molt més fàcil:

sistema ("clang helloworld.c");

I això respon també a la pregunta 3.