Hvad er forskellen mellem kommandolinjeargumenter og scanf-funktion på C-sprog?


Svar 1:
  • Hvordan et program, der bruger kommandolinjeargumenter, kodes i C, er godt forklaret i andre svar. Lad mig fortælle det bare, hvordan det fungerer. Glem C et stykke tid og tag et eksempel. Antag, at du har installeret MS-Office på din computer. Når du højreklikker på en docx-fil fra din pc, giver den dig disse typer muligheder: Åbn med Microsoft Word 2010Now, når du klikker på Åbn med Microsoft Word 2010, overføres banen til docx-filen til MSWORD .exe-fil (der var placeret i mappen C: \ Program Files, da du lavede installationen af ​​softwaren) som et kommandolinjeargumenter (CLA). Men hvis der ikke var kommandolinjeargumenter, ville du sandsynligvis først åbne Microsoft Word 2010 ( hvilket faktisk ikke er andet end MSWORD.exe), og klik derefter på File-> Open. Find derefter .docx-filen, og åbn den derefter. Derfor læser kommandolinjeargumentet ikke input. Den fortæller, at programmet skal initialisere med noget, der sendes til det via kommandolinjeargumenter. Scanf kan bruges på baggrund af betingelser, flere gange i et program. Kommandolinjeargumenter kan kun leveres én gang på tidspunktet for initialisering af programmet. Tag et andet eksempel nedenfor:
Skriv et program for at læse et nummer fra brugeren. Hvis nummeret er det samme som gemt i en tabel i databasen, bør programmet læse 3 flere numre; ellers skal du læse 7 flere numre. Hvis det ene af de 3 numre er det samme som gemt i en tabel i databasen, bør programmet læse yderligere 5 numre; ellers burde det læse 9 flere numre.

Fortæl mig nu i ovenstående program, hvis du vil bruge CLA i stedet for scanf, hvor mange kommandolinjeargumenter vil du acceptere i hovedfunktionen ()?


Svar 2:

1. Kommandolinjeargumentet betyder noget, der overføres til programmet, når du ringer fra CLI.

For eksempel ved at antage, at jeg udarbejder mit C-program:

$ clang helloworld.c

Programmet er klang, og argumentet er helloworld.c

2. scanf er interaktiv. Kommandolinjeargumenter er ikke.

Interaktive input antager, at brugeren bruger det på en interaktiv måde, hvilket muligvis ikke er tilfældet (pr. Unix-design: det skal arbejde let med andre programmer). En bruger kan gøre dette direkte ...

$ klang
Indtast filnavn: helloworld.c

Men for et program er dette meget lettere:

system ("clang helloworld.c");

Og det svarer også på spørgsmål 3.