Уграђене функције библиотеке за кориснички унос | ссцанф, сцанф_с, фсцанф_с, ссцанф_с
Програмски језик Ц пружа различите функције уграђене библиотеке за кориснички унос. У овом чланку ћемо научити о функцијама библиотеке ссцанф сцанф_с фсцанф_с ссцанф_с у Ц.
1. функција ссцанф() у Ц
ссцанф() се користи за читање форматираног уноса из стринга. Функције сцанф() и ссцанф() су сличне, једина разлика између њих је у томе што функција сцанф() чита унос од корисника са стандардног уноса као што је тастатура, а функција ссцанф() чита унос из стринга и чува унос у другом стрингу.
Синтакса
int sscanf ( const char * str const char * format ...);
Параметерс
- По успеху функција враћа број успешно прочитаних вредности.
- У случају грешке у уносу пре него што се било који податак може успешно прочитати ЕОФ се враћа.
- По успеху функција враћа број прочитаних вредности.
- У случају грешке при уносу пре него што се било који податак може успешно прочитати ЕОФ се враћа.
- Ако је величина бафера једнака или мања од величине низа, онда ће уношење веће или једнако величини бафера довести до губитка података јер ће вишак података бити скраћен и подаци до величине бафера - 1 ће бити прочитани.
- Ако је величина бафера већа од величине низа онда
- уношење мање од величине бафера ће радити, али ће дати грешку
- унос веће од величине бафера ће довести до преливања бафера и дати исту грешку.
- По успеху функција враћа број успешно прочитаних вредности.
- У случају грешке при уносу пре него што се било који податак може успешно прочитати ЕОФ се враћа.
- По успеху функција враћа број успешно прочитаних вредности.
- У случају грешке при уносу пре него што се било који податак може успешно прочитати ЕОФ се враћа.
Повратна вредност
Напомена : Требало би да има најмање онолико ових аргумената колико је број вредности сачуваних у спецификацијама формата.
Пример: Ц програм за илустрацију функције ссцанф
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 ; }
Излаз
3 blue balls
2. функција сцанф_с() у Ц
Ова функција је специфична за Мицрософт компајлере. То је исто што и сцанф осим што не узрокује преоптерећење бафера. Функција сцанф_с() је сигурнија од функције сцанф() јер обезбеђује додатни параметар за одређивање величине бафера који може да избегне преливање бафера.
Синтакса
int scanf_s (const char *format [argument]...);
Параметерс
Напомена : Овде можемо одредити величину бафера и заправо контролисати ограничење уноса како се цела апликација не би срушила због преливања меморије.
Повратна вредност
Зашто користити сцанф_с()?
сцанф само чита било који унос који је обезбеђен са конзоле. Ц не проверава да ли ће се кориснички унос уклопити у променљиву коју сте одредили. Ако имате низ који се зове цолор[3] и користите сцанф за стринг Ред, то ће радити добро, али ако корисник унесе више од 3 карактера, сцанф почиње да уписује у меморију која не припада низу боја.
Ц неће ово ухватити или вас упозорити и може или не мора да сруши програм у зависности од тога да ли нешто покуша да приступи и упише на том меморијском слоту који не припада низу боја. Овде сцанф_с улази у игру. сцанф_с проверава да ли ће кориснички унос стати у дати меморијски простор.
Напомена : сцанф_с() ће радити само у Мицрософт Висуал Студио-у.
Пример 1: Ц програм за илустрацију функције ссцанф_с
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
Red
Излаз 1
Red
Улаз 2
Yellow
Излаз 2
No Output
Пример 2: Ц Програм за илустровање односа између величине бафера и величине низа.
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. фсцанф_с() функција у Ц
Разлика између фсцанф() и фсцанф_с() је иста као код сцанф() и сцанф_с(). фсцанф_с() је безбедна функција која захтева да се величина сваког поља типа ц Ц с С и [ ] прослеђује као аргумент непосредно иза променљиве.
Синтакса
int fscanf_s( FILE *stream const char *format [argument ]... );
Параметерс
Напомена : фсцанф_с има додатни параметар да одреди величину бафера и заправо контролише ограничење уноса.
Повратна вредност
Напомена : фсцанф_с ће радити само у МС Висуал студију.
Пример: Ц програм за илустрацију функције фсцанф_с
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 ); }
Излаз
String1 |Hello| String2 |World| String3 |its| Integer |2017|
4. функција ссцанф_с() у Ц
ссцанф_с() је безбедна функција ссцанф() и безбедне функције захтевају да се величина сваког поља ц Ц с С и [ типе прослеђује као аргумент непосредно иза променљиве.
Синтакса
int sscanf_s (const char * restrict buffer const char * restrict format ...);
Параметерс
Напомена : ссцанф_с има додатни параметар да одреди величину бафера и заправо контролише ограничење уноса.
Повратна вредност
Напомена : ссцанф_с() ће радити само у Мицрософт Висуал Студио-у.
Пример: Ц програм за илустрацију функције ссцанф_с
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 ; }
Излаз
3 blue balls
Креирај квиз