Forum Turniej Pokemon

 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

sscanf的用法

 
Napisz nowy temat   Odpowiedz do tematu    Forum Turniej Pokemon Strona Główna -> Arena Rośliny
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ghdhair100




Dołączył: 15 Gru 2010
Posty: 1990
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: England

PostWysłany: Pią 9:40, 11 Mar 2011    Temat postu: sscanf的用法

转网上
#include <stdio.h>
int main()
const char* s = "[email=[ft=#0000ff,,]iios/12DDWDFF@122]iios/12DDWDFF@122[/email]";
char buf[20];
sscanf( s, "%*[^/]/%[^@]", buf );
printf( "%s\n",[link widoczny dla zalogowanych], buf );
return 0;
结果为:12DDWDFF
sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。
函数原型:
int scanf( const char *format [,argument]... );
其中的format可以是一个或多个 {%[*] [width] [I64]type | ' ' | '\t' | '\n' | 非%符号},
注:a表示a,b,c中选一,[d],表示可以有d也可以没有d。
width:宽度,一般可以忽略,用法如:
const char sourceStr[] = "hello, world";
char buf[10] = 0;
sscanf(sourceStr, "%5s", buf); //%5s,只取5个字符
cout << buf<< endl;
结果为:hello
h:参数的size,通常h表示单字节size,I表示2字节 size,[link widoczny dla zalogowanych],L表示4字节size(double例外),l64表示8字节size,[link widoczny dla zalogowanych]。
type :这就很多了,就是%s,%d之类。
特别的:
%*[width] [L]type 表示满足该条件的被过滤掉,不会向目标参数中写入值。如:
const char sourceStr[] = "hello, world";
char buf[10] = 0;
sscanf(sourceStr, "%*s%s", buf); //%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了
cout << buf<< endl;
结果为:world
支持集合操作:
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
%[aB'] 匹配a、B、'中一员,贪婪性
%[^a] 匹配非a的任意字符,贪婪性
是不是感觉眼熟了啊,不错,这和正则表达式很相似,而且仍然支持过滤,即可以有%*[a-z].如:
const char* s = "[email=[ft=#0000ff,,]iios/12DDWDFF@122]iios/12DDWDFF@122[/email]";
char buf[20];
sscanf( s, "%*[^/]/%[^@]", buf );
printf( "%s\n", buf );
先将 "iios/"过滤掉,再将非[email=[ft=#0000ff,,]'@']%20@[/email]的一串内容送到buf中,cool.得到结果。
另:
scanf/sscanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。如果输入数据与指定格式不符,则会产生输入错误。遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。所以,通过scanf函数的返回值和指定输入数据的个数(由格式符决定)的比较,可以判断数据输入是否成功。The secondary purpose is to show you how much traffic 038; visibility your articles are attracting for you.Some questions for you:How would you like to see these email reports improved?What additional information should we include in them?Is monthly the right frequency to send them or would like them more or less frequently?Does this email service lead you to really write and submit more articles or not so much?Would you like to see total # of clicks delivered to your website?


[link widoczny dla zalogowanych]


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Turniej Pokemon Strona Główna -> Arena Rośliny Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
Regulamin