Linux Strptime System Call In C

Linux Strptime System Call In C
Strptime () -funksjonen bruker syntaksen gitt av format for å konvertere karakterstrengen referert med buffer til data som er plassert i strukturen “TM” referert til av “TM”. Her inneholder formatet ett eller forskjellige direktiver, men ikke null. Enten en konverteringsspesifikasjon eller et vanlig tegn (ikke% eller hvitt rom) finner du i et direktiv. Hver spesifikasjon av konverteringer består av en "%" -tegn som omfatter en eller flere konverteringstegn som definerer erstatningen som skal gjøres som indikerer at erstatningen er nødvendig. For å bekrefte at funksjonen fungerer som forventet, må både formatet og bufferen ha et hvitt rom eller en annen separator. For å hindre den første tallkonverteringen fra å konvertere tegn som tilsvarer den andre konverteringsspesifikatoren, må det være en separator mellom de to konverteringene av streng-til-nummer.

Eksempel 1:

La oss følge eksemplet nedenfor for å se funksjonaliteten til strptime -funksjonen på C -språket. Her har vi skrevet ut året med strptime -funksjonen. Som vi er i året “2022”, vil strptime -funksjonen bli utsatt i år. Inne i programfilen til C har vi innløp av toppfilen “Tid.h ”som vi kan få dato- og klokkeslettinformasjon. Etter det etablerte vi funksjonen i hoved () av ​​programmet.

Deretter har vi opprettet bufferen for tildeling av plass for nye data. Bufferen er merket som "resultatet" og datatypen som er tildelt bufferen er røye. Vi har satt størrelsen på bufferens "resultat" med verdien "100". Deretter konstruerte vi variabelen “Time” med datatypen “TIME_T” som lagrer systemets tidsverdi på C -språket. "Time" -variabelen initialiseres med "Time (NULL)" -systemanropet. Med denne tidssystemanropet vil den nåværende tiden bli hentet.

Etter det benyttet vi funksjonen strptime som tar "resultatet", "størrelse" -funksjonen og lokaltidsfunksjonen som argumenter. Lokaltidsfunksjonen legger inn referansen til "tiden" og brukes til å representere nåtiden for systemet vårt. Videre har vi brukt modifisereren “%y” i strptime -funksjonen, som brukes til å vise året på århundret. I den siste linjen i programmet har vi en Printf -uttalelse der vi har brukt %S. Printf -funksjonens %S -formatspesifikasjon lar oss skrive ut en streng. Brukeren mottok en melding som inkluderte inneværende år.

#inkludere
#inkludere
int main (int argc, const char * argv [])

røyeesultat [100];
tid_t tid;
Tid = tid (null);
strftime (resultat, størrelse av (resultat), "%y", lokaletid (& tid));
printf ("Vi er i år % !\ n ", resultat);
retur 0;

Når vi har utført Strptime -programmet, oppnås inneværende år "2022" i systemskallet.

Eksempel 2:

Vi har sett ytelsen til strptime -funksjonen i det foregående eksempelprogrammet. Som vi har diskutert tidligere, støtter strptime -funksjonen forskjellige modifikatorer på C -språket. I dette eksemplet har vi prøvd å bruke noen av strptime -modifikatorene for å utforske funksjonaliteten deres. Her har vi brukt #Define -direktivet for å legge til _xopen_source -definisjonen i overskriftsdelen av følgende program. Det brukes til å legge inn de ekstra definisjonene av funksjoner som finnes i standardene X/Open og Posix.

Deretter har vi også lagt til noen nødvendige moduler av C -standarder for programgjennomføringen. Etter det konstruerte vi hovedfunksjonen der vi etablerte strukturen “TM” for å definere tiden. Vi har erklært objektet “TM” for “Struct TM”. Deretter setter vi størrelsen på bufferen til “100” for strptime -funksjonen. Vi har distribuert memset -funksjonen, som er kjent som minnesetteren. Som navnet antyder, brukes det til å fylle blokkene med minnet med semantisk verdi.

Deretter påkalte vi strptime -funksjonen der vi ga data- og tidsformatet med strptime -modifikatorene. "%Y" -modifisereren brukes til å indikere året. “%M-%d” brukes til å representere måned og dag. "%H:%m:%s" -modifiserer er formatert på en måte som vil gi tiden i timer, minutter og sekunder. Videre har vi brukt en annen funksjon, strftime, for å skille fra strptime -funksjonen.
Strftime -funksjonen opprettet karakterene fra tidsobjektet. Det tar argumentet som en buffer, størrelsen på buffer og noen modifikatorer. Så setter funksjonen "bufferen". Det spesifiserte formatet på dato og klokkeslett vises.

#define _xopen_source
#inkludere
#inkludere
#inkludere
#inkludere
int
hoved (tomrom)

struct tm tm;
char buffer [100];
memset (& tm, 0, sizeof (struct tm));
Strptime ("2022-10-9 12:25:05", "%y-%m-%d%h:%m:%s", & tm);
StrfTime (buffer, størrelse av (buffer), " %d %b %y %h: %m", & tm);
putter (buffer);
exit (exit_success);

Ved å utføre programmet har vi innhentet data og tid i det spesifiserte formatet gitt til funksjonen.

Eksempel 3:

Her har vi vist dato og klokkeslett for den amerikanske regionen ved å bruke strptime -funksjonen. Vi har satt inn standardbiblioteker i følgende program. Deretter distribuerte vi hovedfunksjonen der vi satte bufferstørrelsen. Etter det har vi definert objektet “Time” med datatypen “TIME_T”. Deretter har vi etablert strukturen "TM" som erklærer pekerobjektet "TimePTR" og "Resultat". Deretter kaller vi SetLocale -funksjonen der vi setter dagens sted. "Time" -objektet er satt med tidssystemanropet, som tar null som en verdi.

Til timePTR har vi tildelt LocalTime -funksjonen, som er referert til av "tiden". Strftime -funksjonen er brukt, som tildeles den formaterte datoen og klokkeslettet. Deretter har vi en if-ests-tilstand der IF-tilstanden tar strptime-funksjonen med argumentene. Når den spesifiserte tid og dato innenfor strptime -funksjonen er null, vil Printf -setningen utføre. Ellers har vi en annen seksjon som skal utføres. Den andre delen har forskjellige printf -setninger som bruker de forskjellige modifikatorene for dato og klokkeslett.

#define _xopen_source
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
Int Main (Void)

char buf [100];
tid_t tid;
struct tm *timeptr, utfall;
SetLocale (LC_ALL, "/QSYS.Lib/en_us.Lokalitet ");
Tid = tid (null);
timePTR = Lokaletid (& tid);
StrfTime (BUF, SizeOf (BUF), "%A%M/%D/%Y%R", TimePTR);
if (strptime (buf, "%a%m/%d/%y%r", & utfall) == null)
printf ("\ nstrptime mislyktes \ n");
ellers

printf ("Tid i time: %d \ n", utfall.tm_hour);
printf ("Tid i min: %d \ n", utfall.tm_min);
printf ("Tid i sek: %d \ n", utfall.tm_sec);
printf ("Tid i man: %d \ n", utfall.tm_mon);
printf ("Tid i måned og dag: %d \ n", utfall.tm_mday);
printf ("Tid i år: %d \ n", utfall.tm_year);
printf ("Tid i år og dag: %d \ n", utfall.tm_yday);
printf ("Tid i uke og dag: %d \ n", utfall.tm_wday);

retur 0;

Følgende konverterte data og tid utføres mot hver modifisering av strptime -funksjonen.

Konklusjon

Denne guiden er for Linux Strptime -funksjonen på programmeringsspråket C. Vi har forklart funksjonaliteten til denne spesielle funksjonen med eksemplene koder. Vi har implementert ovennevnte og alle kodene kan kjøres med Ubuntu 22.04 Terminal. Dessuten har vi sett forskjellen mellom de to funksjonene, strptime og strftime, som på en eller annen måte er identiske. Strptime -funksjonen oppretter en tidsutgang fra tekst, inngang og strftime -funksjonen gir strengdata fra tidsinngangen.