cum diferă sscanf de scanf în următoarele afirmații? (Programare, C, Unix)

ajay kumar a intrebat.
a intrebat.

Am dat peste următoarea declarație în timp ce parcurgeam un program c pentru gestionarea mesajelor client/server în unix.

     int main(int argc, char* argv[])
     {
        (void)sscanf(argv[1],"%d",&port);

     }

Ar fi de ajutor dacă ați putea explica declarația de mai sus.

Nu știu de ce oamenii consideră că întrebarea mea nu este clară… Am vrut doar să știu că, dacă scanf primește date de la tastatură, atunci declarația de mai sus sscanf face aceeași treabă în mod indirect. Este corect????

Comentarii

  • Dacă încercați să convertiți un șir de caractere într-un int, atunci acest lucru se poate face fără aceste funcții. –  > Por Ryan.
  • sscanf(); = citește intrarea formatată dintr-un șir de caractere, scanf(); = citește date formatate din stdin –  > Por Rizier123.
  • Deoarece definiția lui buf nu este afișată, nu putem spune prea multe. Trebuie să fie o variabilă din domeniul de cuprindere al fișierului sau o variabilă globală; trebuie să fie un pointer de caractere sau un array de caractere; trebuie să fie inițializată cu o valoare, deoarece codul din main() nu o definește. Și, având în vedere toate acestea, nu era evident să o stocăm ca un șir de caractere doar pentru a o converti într-un întreg. OK: întrebarea s-a transformat – întrebarea main() învelișul a dispărut. Tot nu putem vedea cum buf este definit sau inițializat. Dar instrucțiunea convertește numărul stocat în șirul de caractere (dacă există unul) într-un număr întreg. –  > Por Jonathan Leffler.
  • Vă rugăm să accesați citiți documentația funcțiilor standard pe care le utilizați. Iată una pentru scanf(3) –  > Por Basile Starynkevitch.
  • Vroiam doar să știu că dacă scanf primește intrare de la tastatură, atunci și instrucțiunea de mai sus sscanf face aceeași treabă indirect. Este corect??? –  > Por ajay kumar.
4 răspunsuri
Rizier123

sscanf(); = citește o intrare formatată dintr-un șir de caractere

scanf(); = citește intrarea formatată din stdin

Deci, în exemplul dvs. sscanf citește din primul argument al programului și îl salvează în variabila port

Ca un mic exemplu, ce sscanf face:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

    int day;
    char str[100];

   strcpy(str, "21" );
   sscanf(str, "%d", &day);

   printf("day: %d", day);

   return(0);
}

Ieșire:

day: 21

Havenard

scanf() analizează datele de la intrarea programului (stdin / „keyboard”).

sscanf() analizează datele dintr-un șir de caractere furnizat.

scanf() Funcția citește datele din stdin în locațiile date de fiecare intrare din lista de argumente.

sscanf() funcția citește datele dintr-un șir de caractere (în cazul dvs. argv[1]) în locația dată(port în cazul dumneavoastră)

Anbu.Sankar

scanf() citește datele de intrare din fluxul de intrare standard stdin.

Funcția sscanf() își citește datele de intrare din șirul de caractere indicat de către funcția primul argument.

Tags:,