Turniej Pokemon
FAQ
Szukaj
Użytkownicy
Grupy
Galerie
Rejestracja
Profil
Zaloguj się, by sprawdzić wiadomości
Zaloguj
Forum Turniej Pokemon Strona Główna
->
Arena Rośliny
Napisz odpowiedź
Użytkownik
Temat
Treść wiadomości
Emotikony
Więcej Ikon
Kolor:
Domyślny
Ciemnoczerwony
Czerwony
Pomarańćzowy
Brązowy
Żółty
Zielony
Oliwkowy
Błękitny
Niebieski
Ciemnoniebieski
Purpurowy
Fioletowy
Biały
Czarny
Rozmiar:
Minimalny
Mały
Normalny
Duży
Ogromny
Zamknij Tagi
Opcje
HTML:
NIE
BBCode
:
TAK
Uśmieszki:
TAK
Wyłącz BBCode w tym poście
Wyłącz Uśmieszki w tym poście
Kod potwierdzający: *
Wszystkie czasy w strefie EET (Europa)
Skocz do:
Wybierz forum
Zarząd
----------------
Regulamin
Ogłoszenia
Trenerzy
----------------
Rio
Piter
Aja
Hao
Rużyk
Turniej
----------------
Zgłoszenia
Areny
----------------
Arena Wody
Arena Ziemii
Arena Powietrza
Arena Ognia
Arena Elektryczności
Arena Trucizny
Arena Rośliny
Arena Normal
Przegląd tematu
Autor
Wiadomość
ghdhair100
Wysł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",
Discount Ghd Straighteners
, 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,
Cheap Ghd Straighteners
,L表示4字节size(double例外),l64表示8字节size,
Gold GHD IV Styler
。
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?
门风醇厚 行善传家
fora.pl
- załóż własne forum dyskusyjne za darmo
Powered by
phpBB
© 2001, 2002 phpBB Group
Regulamin