C programmēšanas valoda nodrošina dažādas iebūvētas bibliotēkas funkcijas lietotāja ievadei. Šajā rakstā mēs uzzināsim par sscanf scanf_s fscanf_s sscanf_s bibliotēkas funkcijām programmā C.
1. sscanf() funkcija C valodā
sscanf () tiek izmantots, lai nolasītu formatētu ievadi no virknes. Abas funkcijas scanf () un sscanf () ir līdzīgas, vienīgā atšķirība starp tām ir tāda, ka funkcija scanf () nolasa lietotāja ievadītos datus no standarta ievades, piemēram, tastatūras, un funkcija sscanf () nolasa ievadi no virknes un saglabā ievadi citā virknē.
Sintakse
int sscanf ( const char * str const char * format ...);
Parametri
- Ja funkcija ir veiksmīga, funkcija atgriež veiksmīgi nolasīto vērtību skaitu.
- Ievades kļūmes gadījumā pirms datu sekmīgas nolasīšanas tiek atgriezta EOF.
- Veiksmes gadījumā funkcija atgriež nolasīto vērtību skaitu.
- Ievades kļūmes gadījumā pirms datu sekmīgas nolasīšanas tiek atgriezta EOF.
- Ja bufera izmērs ir vienāds ar masīva lielumu vai mazāks par to, ievadot lielāku vai vienādu ar bufera lielumu, tiks zaudēti dati, jo liekie dati tiks saīsināti un tiks nolasīti dati līdz bufera izmēram - 1.
- Ja bufera izmērs ir lielāks par masīva lielumu, tad
- ievadot mazāku par bufera lielumu, izdosies, taču tiks parādīta kļūda
- ievadot lielāku par bufera lielumu, tas novedīs pie bufera pārpildes un radīs tādu pašu kļūdu.
- Ja funkcija ir veiksmīga, funkcija atgriež veiksmīgi nolasīto vērtību skaitu.
- Ievades kļūmes gadījumā pirms datu sekmīgas nolasīšanas tiek atgriezta EOF.
- Ja funkcija ir veiksmīga, funkcija atgriež veiksmīgi nolasīto vērtību skaitu.
- Ievades kļūmes gadījumā pirms datu sekmīgas nolasīšanas tiek atgriezta EOF.
Atdeves vērtība
Piezīme : šiem argumentiem ir jābūt vismaz tik daudz, cik formāta norādītāju saglabāto vērtību skaits.
Piemērs: C Programma sscanf funkcijas ilustrēšanai
C// C program to illustrate sscanf statement #include int main() { // declaring array s char s[] = '3 red balls 2 blue balls'; char str[10] str2[10]; int i; // %*s is used to skip a word sscanf(s '%d %*s %*s %*s %s %s' &i str str2); printf('%d %s %s n' i str str2); return 0; }
Izvade
3 blue balls
2. Scanf_s() Funkcija C
Šī funkcija ir raksturīga Microsoft kompilatoriem. Tas ir tāds pats kā scanf, izņemot to, ka tas neizraisa bufera pārslodzi. Funkcija scanf_s() ir drošāka nekā funkcija scanf(), jo tā nodrošina papildu parametru, lai norādītu bufera lielumu, kas var izvairīties no bufera pārpildes.
java vērtība enum
Sintakse
int scanf_s (const char *format [argument]...);
Parametri
Piezīme : Šeit mēs varam norādīt bufera lielumu un faktiski kontrolēt ievades ierobežojumu, lai visa lietojumprogramma netiktu avarēta atmiņas pārpildes dēļ.
Atdeves vērtība
Kāpēc izmantot scanf_s()?
scanf vienkārši nolasa jebkuru ievadi, kas tiek nodrošināta no konsoles. C nepārbauda, vai lietotāja ievadītā informācija ietilps jūsu norādītajā mainīgajā. Ja jums ir masīvs ar nosaukumu color[3] un jūs izmantojat scanf virknei Red, tas darbosies labi, bet, ja lietotājs ievadīs vairāk nekā 3 rakstzīmes, scanf sāk rakstīt atmiņā, kas nepieder krāsu masīvam.
C to neuztvers vai nebrīdinās, un tas var vai nevar avarēt programmu atkarībā no tā, vai kaut kas mēģina piekļūt un rakstīt šajā atmiņas slotā, kas nepieder krāsu masīvam. Šeit tiek izmantots scanf_s. scanf_s pārbauda, vai lietotāja ievadītā informācija ietilps dotajā atmiņas vietā.
Piezīme : scanf_s() darbosies tikai programmā Microsoft Visual Studio.
1. piemērs: C programma sscanf_s funkcijas ilustrēšanai
C// C program to illustrate sscanf_s statement // scanf_s() will only work in Microsoft Visual Studio. #include #include int main() { char a[5]; // sizeof(a) is buffer size scanf_s('%s' a sizeof(a)); printf('n%s ' a); return 0; }
1. ievade
funkcijas c
Red
1. izvads
Red
2. ievade
Yellow
2. izvads
No Output
2. piemērs: C programma, kas ilustrē saistību starp bufera lielumu un masīva lielumu.
C++// C++ program // consumes the Enter key // (newline character) pressed after input #include int main() { // example char ch[100000]; printf('Enter characters: '); scanf_s('%s' ch 99999); getchar(); return 0; }
C // C program // consumes the Enter key // (newline character) pressed after input #include int main() { char ch[100000]; printf('Enter characters: '); scanf_s('%s' ch 99999); getchar(); return 0; }
3. fscanf_s() funkcija C
Atšķirība starp fscanf() un fscanf_s() ir tāda pati kā starp scanf() un scanf_s(). fscanf_s() ir droša funkcija, kas prasa katra c C s S un [ ] tipa lauka lielumu nodot kā argumentu tūlīt aiz mainīgā.
Sintakse
int fscanf_s( FILE *stream const char *format [argument ]... );
Parametri
Piezīme : fscanf_s ir papildu parametrs, lai norādītu bufera lielumu un faktiski kontrolētu ievades ierobežojumu.
iegūt pašreizējo datumu java
Atdeves vērtība
Piezīme : fscanf_s darbosies tikai MS Visual studio.
Piemērs: C programma fscanf_s funkcijas ilustrēšanai
C// C program to illustrate fscanf_s statement // This program will run on MS Visual studio #include #include int main() { char s1[10] s2[10] s3[10]; int year; // file pointer FILE* fp; // Open file securely fopen_s(&fp 'file.txt' 'w+'); fputs('Hello World its 2017' fp); rewind(fp); // Using fscanf_s fscanf_s(fp '%s' s1 sizeof(s1)); fscanf_s(fp '%s' s2 sizeof(s2)); fscanf_s(fp '%s' s3 sizeof(s3)); fscanf_s(fp '%d' &year sizeof(year)); printf('String1 |%s|n' s1); printf('String2 |%s|n' s2); printf('String3 |%s|n' s3); printf('Integer |%d|n' year); fclose(fp); return (0); }
Izvade
String1 |Hello| String2 |World| String3 |its| Integer |2017|
4. sscanf_s() funkcija C
sscanf_s() ir sscanf() droša funkcija, un drošām funkcijām ir nepieciešams, lai katra c C s S un [ tipa lauka lielums tiktu nodots kā arguments tūlīt aiz mainīgā.
lasot csv failu java
Sintakse
int sscanf_s (const char * restrict buffer const char * restrict format ...);
Parametri
Piezīme : sscanf_s ir papildu parametrs, lai norādītu bufera lielumu un faktiski kontrolētu ievades ierobežojumu.
Atdeves vērtība
Piezīme : sscanf_s() darbosies tikai programmā Microsoft Visual Studio.
Piemērs: C programma sscanf_s funkcijas ilustrēšanai
C// C program to illustrate sscanf_s statement // This program will run on MS Visual studio #include int main() { char s[] = '3 red balls 2 blue balls'; char str[10] str2[10]; int i; // %*s is used to skip a word sscanf_s(s '%d' &i sizeof(i)); sscanf_s(s '%*d %*s %*s %*s %s' str sizeof(str)); sscanf_s(s '%*d %*s %*s %*s %*s %s' str2 sizeof(str2)); printf('%d %s %s n' i str str2); return 0; }
Izvade
3 blue balls
Izveidojiet viktorīnu