Ted's Blog

Happy coding

sprintf详解

Ted posted @ 2008年9月12日 22:39 in c with tags c , 3010 阅读

在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。

sprintf 是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:
格式化字符串上。


printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要 的字符串。

格式化数字字符串
sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代
itoa。

如:
//把整数123 打印成一个字符串保存在s 中。
sprintf(s, "%d", 123); //产生"123"
可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
也可以按照16 进制打印:
sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐
sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐

这样,一个整数的16 进制字符串就很容易得到,但我们在打印16 进制内容时,通常想要一种左边补0 的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0 就可以了。
sprintf(s, "%08X", 4567); //产生:"000011D7"
上面以”%d”进行的10 进制打印同样也可以使用这种左边补0 的方式。


这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1 的内存16 进制表示形式,在Win32 平台上,一个short 型占2 个字节,所以我们自然希望用4 个16 进制数字来打印它:
short si = -1;
sprintf(s, "%04X", si);
产 生“FFFFFFFF”,怎么回事?因为spritnf 是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底 是个4 字节的整数还是个2 字节的短整数,所以采取了统一4 字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32 位的整数-1,打印时4 个位置不够了,就把32 位整数-1 的8 位16 进制都打印出来了。

如果你想看si 的本来面目,那么就应该让编译器做0 扩展而不是符号扩展(扩展时二进制左边补0 而不是补符号位):
sprintf(s, "%04X", (unsigned short)si);
就可以了。或者:
unsigned short si = -1;
sprintf(s, "%04X", si);


sprintf 和printf 还可以按8 进制打印整数字符串,使用”%o”。注意8 进制和16 进制都不会打
印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16 进制或8 进制表示。

控制浮点数打印格式
浮点数的打印和格式控制是sprintf 的又一大常用功能,浮点数使用格式符”%f”控制,默认保
留小数点后6 位数字,比如:
sprintf(s, "%f", 3.1415926); //产生"3.141593"
但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%m.nf”格式,其中m 表
示打印的宽度,n 表示小数点后的位数。比如:
sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"
sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "
sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142"

注意一个问题,你猜
int i = 100;
sprintf(s, "%.2f", i);
会打出什么东东来?“100.00”?对吗?自己试试就知道了,同时也试试下面这个:
sprintf(s, "%.2f", (double)i);
第 一个打出来的肯定不是正确结果,原因跟前面提到的一样,参数压栈时调用者并不知道跟i相对应的格式控制符是个”%f”。而函数执行时函数本身则并不知道当 年被压入栈里的是个整数,于是可怜的保存整数i 的那4 个字节就被不由分说地强行作为浮点数格式来解释了,整个乱套了。不过,如果有人有兴趣使用手工编码一个浮点数,那么倒可以使用这种方法来检验一下你手工编 排的结果是否正确。

字符/Ascii 码对照
我们知道,在C/C++语言中,char 也是一种普通的scalable 类型,除了字长之外,它与short,
int,long 这些类型没有本质区别,只不过被大家习惯用来表示字符和字符串而已。(或许当年该把
这 个类型叫做“byte”,然后现在就可以根据实际情况,使用byte 或short 来把char 通过typedef 定义出来,这样更合适些)于是,使用”%d”或者”%x”打印一个字符,便能得出它的10 进制或16 进制的ASCII 码;反过来,使用”%c”打印一个整数,便可以看到它所对应的ASCII 字符。以下程序段把所有可见字符的ASCII 码对照表打印到屏幕上(这里采用printf,注意”#”与”%X”合用时自动为16 进制数增加”0X”前缀):
for(int i = 32; i < 127; i++) {
printf("[ %c ]: %3d 0x%#04X\n", i, i, i);
}


连接字符串
sprintf 的格式控制串中既然可以插入各种东西,并最终把它们“连成一串”,自然也就能够连
接字符串,从而在许多场合可以替代strcat,但sprintf 能够一次连接多个字符串(自然也可以同时
在它们中间插入别的内容,总之非常灵活)。比如:
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "
strcat 只能连接字符串(一段以’’结尾的字符数组或叫做字符缓冲,null-terminated-string),但有时我们有两段字符缓冲区,他们并不是以 ’’结尾。比如许多从第三方库函数中返回的字符数组,从硬件或者网络传输中读进来的字符流,它们未必每一段字符序列后面都有个相应的’’来结尾。如果直接 连接,不管是sprintf 还是strcat 肯定会导致非法内存操作,而strncat 也至少要求第一个参数是个null-terminated-string,那该怎么办呢?我们自然会想起前面介绍打印整数和浮点数时可以指定宽度,字符串 也一样的。比如:
char a1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2[] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
如果:
sprintf(s, "%s%s", a1, a2); //Don't do that!
十有八九要出问题了。是否可以改成:
sprintf(s, "%7s%7s", a1, a2);
也没好到哪儿去,正确的应该是:
sprintf(s, "%.7s%.7s", a1, a2);//产生:"ABCDEFGHIJKLMN"
这 可以类比打印浮点数的”%m.nf”,在”%m.ns”中,m 表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印),n 才表示从相应的字符串中最多取用的字符数。通常在打印字符串时m 没什么大用,还是点号后面的n 用的多。自然,也可以前后都只取部分字符:
sprintf(s, "%.6s%.5s", a1, a2);//产生:"ABCDEFHIJKL"
在 许多时候,我们或许还希望这些格式控制符中用以指定长度信息的数字是动态的,而不是静态指定的,因为许多时候,程序要到运行时才会清楚到底需要取字符数组 中的几个字符,这种动态的宽度/精度设置功能在sprintf 的实现中也被考虑到了,sprintf 采用”*”来占用一个本来需要一个指定宽度或精度的常数数字的位置,同样,而实际的宽度或精度就可以和其它被打印的变量一样被提供出来,于是,上面的例子 可以变成:
sprintf(s, "%.*s%.*s", 7, a1, 7, a2);
或者:
sprintf(s, "%.*s%.*s", sizeof(a1), a1, sizeof(a2), a2);
实际上,前面介绍的打印字符、整数、浮点数等都可以动态指定那些常量值,比如:
sprintf(s, "%-*d", 4, 'A'); //产生"65 "
sprintf(s, "%#0*X", 8, 128); //产生"0X000080","#"产生0X
sprintf(s, "%*.*f", 10, 2, 3.1415926); //产生" 3.14"


打印地址信息
有时调试程序时,我们可能想查看某些变量或者成员的地址,由于地址或者指针也不过是个32 位的数,你完全可以使用打印无符号整数的”%u”把他们打印出来:
sprintf(s, "%u", &i);
不过通常人们还是喜欢使用16 进制而不是10 进制来显示一个地址:
sprintf(s, "%08X", &i);
然而,这些都是间接的方法,对于地址打印,sprintf 提供了专门的”%p”:
sprintf(s, "%p", &i);
我觉得它实际上就相当于:
sprintf(s, "%0*x", 2 * sizeof(void *), &i);
利用sprintf 的返回值
较少有人注意printf/sprintf 函数的返回值,但有时它却是有用的,spritnf 返回了本次函数调用
最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf 调用结束以后,你无须再调用一次
strlen 便已经知道了结果字符串的长度。如:
int len = sprintf(s, "%d", i);
对于正整数来说,len 便等于整数i 的10 进制位数。
下面的是个完整的例子,产生10 个[0, 100)之间的随机数,并将他们打印到一个字符数组s 中,
以逗号分隔开。
#include
#include
#include
int main() {
srand(time(0));
char s[64];
int offset = 0;
for(int i = 0; i < 10; i++) {
offset += sprintf(s + offset, "%d,", rand() % 100);
}
s[offset - 1] = '\n';//将最后一个逗号换成换行符。
printf(s);
return 0;
}
设想当你从数据库中取出一条记录,然后希望把他们的各个字段按照某种规则连接成一个字
符串时,就可以使用这种方法,从理论上讲,他应该比不断的strcat 效率高,因为strcat 每次调用
都需要先找到最后的那个’’的位置,而在上面给出的例子中,我们每次都利用sprintf 返回值把这
个位置直接记下来了。


使用sprintf 的常见问题
sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访
问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通
常用眼睛再把出错的代码多看几眼就看出来了。


?? 缓冲区溢出
第一个参数的长度太短了,没的说,给个大点的地方吧。当然也可能是后面的参数的问
题,建议变参对应一定要细心,而打印字符串时,尽量使用”%.ns”的形式指定最大字符数。


?? 忘记了第一个参数
低级得不能再低级问题,用printf 用得太惯了。//偶就常犯。:。(


?? 变参对应出问题
通常是忘记了提供对应某个格式符的变参,导致以后的参数统统错位,检查检查吧。尤
其是对应”*”的那些参数,都提供了吗?不要把一个整数对应一个”%s”,编译器会觉得你
欺她太甚了(编译器是obj 和exe 的妈妈,应该是个女的,:P)。

strftime
sprnitf 还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也
是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为
了在出现问题时可以推卸责任吧。这里举个例子:
time_t t = time(0);
//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。
char s[32];
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));
sprintf 在MFC 中也能找到他的知音:CString::Format,strftime 在MFC 中自然也有她的同道:
CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅。

Avatar_small
jener 说:
2020年11月21日 18:14
Jason is a good actor from hollywood. Jason is also a good cricketer in the Australian cricket team. Jason is a very common and famous name among normal people and celebrties as well by Grill Cleaning. Jason is a good pacer.
Avatar_small
jener 说:
2020年11月21日 18:15
Jason is a good actor from hollywood. Jason is also a good cricketer in the Australian cricket team. Jason is a very common and famous name among normal people and celebrties as well by Grill Cleaning. Jason is a good pacer.
Avatar_small
jener 说:
2020年11月21日 18:15
Jason is a good actor from hollywood. Jason is also a good cricketer in the Australian cricket team. Jason is a very common and famous name among normal people and celebrties as well by Grill Cleaning. Jason is a good pacer.
Avatar_small
Robinjack 说:
2020年12月08日 21:03

A lot of this early online dating activity was initiated by the individual ISPs themselves, with companies such as America Online providing chat rooms specifically designed for singles for the purpose of dating. 配對

Avatar_small
Robinjack 说:
2020年12月21日 20:32

Hello my family member! I want to say that this article is awesome, nice written and include approximately all vital infos. I would like to look extra posts like this. meeting booking software

Avatar_small
UMAIR 说:
2020年12月26日 18:13

To know more of their services, you need to visit https:// edit- https://edit-pdf.pdffiller.com/en/services.htm /en/services.htm. They are fairly very detailed and informative at the same time. Do read their contents for sure, you will end up liking them for sure.

Avatar_small
Robinjack 说:
2021年2月17日 21:46

Nice post. I learn something on different blogs everyday. It can all the time be stimulating to read content from other writers and observe somewhat something from their blog. resource scheduling software

Avatar_small
amelia 说:
2021年3月13日 00:04

Respecting the time and exertion you put into your site and nitty gritty data you offer!..  Buy DMT

Avatar_small
amelia 说:
2021年3月15日 00:24

Affection to peruse it,Waiting For More new Update and I Already Read your Recent Post its Great Thanks.  wholesale sunglasses

Avatar_small
amelia 说:
2021年3月18日 20:34

Hi. I discovered your online journal utilizing msn. This is a greatly elegantly composed article. I will make sure to bookmark it and come back to peruse a greater amount of your valuable data. A debt of gratitude is in order for the post. I'll positively rebound.  wholesale leather handbags

Avatar_small
amelia 说:
2021年3月18日 20:34

This is my first time visit here. From the huge amounts of remarks on your articles,I surmise I am not just one having all the satisfaction right here!  wholesale fashion jewelry accessories

Avatar_small
amelia 说:
2021年4月02日 18:45

Really decent post. I just unearthed your weblog and needed to say that I have truly delighted in searching your blog entries. After all I'll be subscribing to your food and I trust you compose again soon!  ceo coaching-and-mentoring

Avatar_small
maxbet 说:
2021年4月07日 18:23

most brands of kids shoes are using synthetic leather which is sometimes hard for a kid’s feet“

Avatar_small
amelia 说:
2021年4月10日 06:33

This is a great inspiring article.I am pretty much pleased with your good work.You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post. รีวิวUFA365

Avatar_small
chalsea 说:
2021年4月15日 01:47

That is truly pleasant to listen. much obliged to you for the overhaul and good fortunes.  psychedelic drugs and anxiety

Avatar_small
抗皺修護霜 说:
2021年4月15日 15:00

In order to allow consumers to share the benefits of the professional skin care of FILORGA Aesthetic Medicine Laboratory in their daily skin care, FILORGA Filorga encapsulates the 50 active ingredients in the complex with hyaluronic acid into the microsphere delivery technology. It is NCEF [New Cellular Encapsulated Factors], and it is applied to skin care products, including bright eye cream OPTIM-EYES, anti-wrinkle repair cream, soft moisturizing mask MESO-MASK, NCEF ESSENCE, TIME-FILLLER, and other products. Make the active ingredients penetrate deep into the muscle bottom layer by layer for endogenous repair, strengthen the muscle bottom, fade away the signs of aging, make the skin tender, firm, and shiny. <a href="https://www.filorgahk.com/products?query=%E6%8A%97%E7%9A%BA%E4%BF%AE%E8%AD%B7%E9%9C%9C">抗皺修護霜</a>

Avatar_small
chalsea 说:
2021年4月18日 03:50

I'm glad to see the great detail here!. debt relief

Avatar_small
chalsea 说:
2021年4月22日 04:11

I can set up my new thought from this post. It gives top to bottom data. A debt of gratitude is in order for this significant data for all,..  Cyber Security

Avatar_small
chalsea 说:
2021年4月24日 04:07

Thanks for providing recent updates regarding the concern, I look forward to read more. 스포츠토토

Avatar_small
crime scene cleanup 说:
2021年5月07日 19:08

great work man i would like to congratulate you on this effort <a https://crimescenecleanup.cleaning/crime-scene-cleaning-gilbert-az.html

Avatar_small
apexsigncompany 说:
2021年5月20日 23:39

Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post with people <a href="https://www.apexsigncompany.com/sign-company-in-commerce/">https://www.apexsigncompany.com/sign-company-in-commerce/</a>

Avatar_small
<a href="https://www 说:
2021年5月20日 23:41

I am jovial you take pride in what you write. It makes you stand way out from many other writers that can not push high-quality content like you.

Avatar_small
amelia 说:
2021年5月22日 04:13

I might want to thank you for the endeavors you have made in composing this article. I am trusting the same best work from you later on also. Much appreciated...  remoteconnect

Avatar_small
mukti-119 说:
2021年5月24日 17:27

In case, if you are the one who is struggling to know more about gba emulator, then make sure to find the right source which will be supportive to gather essential information.

Avatar_small
safe-playground 说:
2021年5月24日 17:28

Do you want to more ranks and views on your website? Is your site week on the Google Rankings? If yes to all of them.

Avatar_small
gym routine for girl 说:
2021年5月25日 16:46

Getting started in a gym and starting to have a fitness life is a task that takes time and dedication. In this article, we will show you a routine for beginner girls who want to change their lifestyle and improve their health.

Avatar_small
lock and key 说:
2021年5月25日 19:42

MyKey Locksmith is a local locksmith company in Palm Beach County, FL. MyKey Locksmith provides its customers with top residential, ...
<a href="https://www.mykey-locksmith.com/">lock and key</a>

Avatar_small
conference room sche 说:
2021年5月26日 13:24

Dear admin, thanks for providing this blog post. I found it great. Take care,

Avatar_small
Digitize a logo 说:
2021年5月26日 15:02

we only believe in quality
and value for money - all design members come from a production based background,
and we would not send out something we wouldn't be happy with stitch ourselves.

Avatar_small
바카라 그림 보는 법 说:
2021年5月26日 17:19

Martin Betting (Martin Gale Betting Method) Players who play baccarat in casinos have tried a lot to reduce the damage they lose in betting. The strategy invented in the meantime was Martin Betting, commonly referred to as System Betting, and officially referred to as the Martingale Betting Method.

Avatar_small
Dog Boarding Kennels 说:
2021年5月26日 20:25

We provide the best dog & cat boarding kennels in Sydney. If you are looking for long term kennels & long term pet boarding, then you are in the right place.

Avatar_small
roofing sydney 说:
2021年5月26日 20:36

Australian Insurance Builders Network · map25-redish. License number: 278889c. envelope4-green · info@senfixroofing.com ·<a href="https://senfixroofing.com/">roofing sydney</a>

Avatar_small
Scaffolding Sydney 说:
2021年5月26日 20:45

SS scaffolding provides residential, commercial and high rise scaffolding solutions in and around Sydney. We provide transport and Labour hire for projects of

Avatar_small
Lamp with bluetooth 说:
2021年5月26日 20:52

Blooming Lamps offers top quality lighting lamps that make a statement and adds a character to your home and office.

Avatar_small
interiorelementz 说:
2021年5月27日 15:03

Famous Interior Designers. Make Your House Feel Like a Home. Our Professionals Can Help You Every Step of The Way Through The Interior Design Process...

Avatar_small
토토 미니게임 잘하는 법 说:
2021年5月28日 14:52

Then, I will explain how variables can be inferred in earnest. In overseas dividends, Odds makers measure the dividends due to various information such as the condition, atmosphere, and player lineup of the match team, and check that the changes are made in real time. You can.

Avatar_small
vree beauty 说:
2021年5月29日 15:08

We believe that by improving one environmental footprint at a time, we can start countless ripple effects of good deeds around the world.
<a href="https://nourishcleanbeauty.com.hk/">vree beauty</a>

Avatar_small
ch 说:
2021年5月29日 18:06

I might want to say this online journal truly persuaded me to do it! Much appreciated, great post.  click here

Avatar_small
ch 说:
2021年5月29日 23:39

Thank you for another great article. Where else could anyone get that kind of information in such a perfect way of writing? I have a presentation next week, and I am on the look for such information. Rent a car Beograd

Avatar_small
ch 说:
2021年6月01日 00:35

Dignity College of Healthcare online surgical technician training is far superior than other online Surgical Technician programs because it includes the training, exam review and national certification exam for the EKG technician and a comprehensive, but simple tailored program for the Surgical Technician. Register with Confidence and attend a nationally accredited, but affordable program. In just 4 months, you can finish with two certifications (A national certification as an Electrocardiogram Technician and a school certification of completion as a surgical Technician) without a loan on your neck! Online surgical tech program

Avatar_small
ch 说:
2021年6月01日 18:32

Job Websites for 2020: The Top Ten Job search USA

Avatar_small
ch 说:
2021年6月02日 00:11

Completely awesome posting! Bunches of helpful data and motivation, both of which we all need!Relay welcome your work.  بخاخ زيت

Avatar_small
ch 说:
2021年6月05日 03:34

This is only the data I am discovering all around. A debt of gratitude is in order for your web journal, I simply subscribe your site. This is a pleasant web journal..  New York Magazine

Avatar_small
ch 说:
2021年6月05日 05:51

Incredible website! Do you have any tips and clues for yearning scholars? I'm wanting to begin my own particular site soon yet I'm somewhat lost on everything. Would you propose beginning with a free stage like WordPress or go for a paid alternative? There are such a large number of choices out there that I'm totally overpowered .. Any proposals? Much obliged!  site page Go

Avatar_small
chalsea 说:
2021年6月06日 19:43

I have perused your article, it is exceptionally instructive and accommodating for me.I respect the important data you offer in your articles. A debt of gratitude is in order for posting it..  more info

Avatar_small
Click here 说:
2021年6月09日 13:30

Nourish is where you will find the best, most effective purpose-led beauty brands that source ingredients and packaging responsibly and share a passion for responsible consumption. Each is on a path towards sustainability; they use only clean or organic ingredients free of toxins and harmful chemicals, and are totally animal friendly. We also favor family-oriented businesses with an artisanal hand-made approach to their products, and who share the same values as our community.

Avatar_small
ch 说:
2021年7月07日 05:39

Great article, much obliged for assembling this! This is clearly one incredible post. A debt of gratitude is in order for the important data and bits of knowledge you have so given here.  Louisiana Asset Accumulation Strategies

Avatar_small
ch 说:
2021年7月30日 00:21

I have been looking at a couple of your stories and i can state really well done. I will bookmark your website  Bobblehead from pictures

Avatar_small
ch 说:
2021年8月01日 04:45

I have as of late begun an online journal, the information you give on this website has helped me extraordinarily. Much obliged for the majority of your time and work.  RT-PCR test

Avatar_small
ch 说:
2021年8月11日 00:03

I really appreciate the kind of topics you post here. Thanks for sharing us a great information that is actually helpful. Good day! RT-PCR test

Avatar_small
ch 说:
2021年8月14日 23:51

Learn how to calculate your life path number by hand and using our calculator. life path calculator

Avatar_small
ch 说:
2021年8月21日 19:10

The data you have posted is extremely helpful. The locales you have alluded was great. A debt of gratitude is in order for sharing..  olejek cbd

Avatar_small
Robinjack 说:
2021年8月22日 22:33

Your blog is one of a kind, i love the way you organize the topics.**-.~ meeting room booking google calendar

Avatar_small
ch 说:
2021年8月29日 23:34

You have a genuine capacity for composing one of a kind substance. I like how you think and the way you speak to your perspectives in this article. I concur with your mindset. Much obliged to you for sharing.  Affiliate Mentoring

Avatar_small
silk bedding 说:
2021年9月01日 22:19

I know this is one of the most meaningful information for me. And I'm animated reading your article. But should remark on some general things, the website style is perfect; the articles are great. Thanks for the ton of tangible and attainable help.

Avatar_small
Robinjack 说:
2021年9月06日 21:18

I agreed with your conclusions and seeking impatience to future upgrades. The value and meaning is vast and has been invaluable for myself! babysitting Brandon

Avatar_small
free helium hotspot 说:
2021年9月07日 01:23

nice bLog! its interesting. thank you for sharing....

Avatar_small
free helium hotspot 说:
2021年9月07日 01:24

Interesting topic for a blog. I have been searching the Internet for fun and came upon your website. Fabulous post. Thanks a ton for sharing your knowledge! It is great to see that some people still put in an effort into managing their websites. I'll be sure to check back again real soon.

Avatar_small
ทางเข้าpg 说:
2021年9月07日 23:12

That can feel great to learn these kinds of useful and also special posts on your own sites.

Avatar_small
ch 说:
2021年9月08日 03:06

it was a magnificent opportunity to visit this sort of site and I am glad to know. much obliged to you such a great amount for allowing us to have this open door..  Pest Control in Melbourne

Avatar_small
ch 说:
2021年9月12日 01:45

Amazing site, Distinguished criticism that I can handle. Im advancing and may apply to my present place of employment as a pet sitter, which is exceptionally agreeable, yet I have to extra grow. Respects.  Handicap

Avatar_small
quincy mortgage 说:
2021年9月12日 19:56

Many thanks for that publish as well as excellent ideas.. actually We additionally believe that effort is actually the most crucial facet of obtaining achievement.

Avatar_small
Harry 说:
2021年9月13日 00:27

Im no expert, but I believe you just made an excellent point. You certainly fully understand what youre speaking about, and I can truly get behind that. copper faucet

Avatar_small
Harry 说:
2021年9月14日 00:21

Thank you for another great article. Where else could anyone get that kind of information in such a perfect way of writing? I have a presentation next week, and I am on the look for such information. upload carousel to instagram from pc

Avatar_small
fishing charter pens 说:
2021年9月14日 21:35

Hey, this day is too much good for me, since this time I am reading this enormous informative article here at my home. Thanks a lot for massive hard work.

Avatar_small
Harry 说:
2021年9月24日 21:54

I found your this post while searching for information about blog-related research ... It's a good post .. keep posting and updating information. Cash App generator

Avatar_small
Robinjack 说:
2021年9月25日 21:42

Phoenix Residences (Former Phoenix Heights) by OKP Holdings Limited. Hotline 61009266. Get Discounts, Direct Developer Price, Brochure, Floor Plan, Price List & More. Phoenix Residences Floor Plan

Avatar_small
Robinjack 说:
2021年10月06日 19:45

Congratulations on having one of the most sophisticated blogs Ive come across in some time! Its just incredible how much you can take away from something simply because of how visually beautiful it is. Youve put together a great blog space –great graphics, videos, layout. This is definitely a must-see blog. Verticus showroom

Avatar_small
Ajmer Board 10th Exa 说:
2021年10月12日 17:35

RBSE 10th Solve Model Bank 2022, RBSE 10th Bit Bank Download the RBSE 10th Important Question Paper 2022 in PDF format. Ajmer Board 10th Exam Pattern 2022 Rajasthan's Board of Secondary Education (BSER) will hold a public examination for the 10th grade in 2022. BSER Matric Exam will be held in the month of MBSER 12th Blueprint 2022 5 to 6 lakhs of students taking part in the exam each year. Rajasthan Board 10th Class Exam Dates are expected to be announced soon.

Avatar_small
ch 说:
2021年10月17日 22:13

It ended up being Very useful to me and I am certain to every one of the observers here!  CBD for dogs

Avatar_small
ch 说:
2021年10月22日 00:40

I gotta most loved this site it appears to be extremely useful .  Creative writing services

Avatar_small
ch 说:
2021年11月07日 06:09

Really great post. I just unearthed your online journal and needed to say that I have truly delighted in perusing your blog entries. Any way I'll be subscribing to your food and I trust you post again soon. Huge a debt of gratitude is in order for the valuable information. rose toy

Avatar_small
ch 说:
2021年11月07日 06:09

Excellent and very exciting site. Love to watch. Keep Rocking. blueenjoy leggings

Avatar_small
ch 说:
2021年11月07日 06:09

Wow i can say this is another awesome article not surprisingly of this blog.Bookmarked this website.. best compression socks

Avatar_small
Robinjack 说:
2021年11月07日 19:50

What i don’t understood is in fact how you’re not really a lot more neatly-appreciated than you may be right now. You are very intelligent. You realize thus significantly in relation to this matter, produced me individually believe it from numerous varied angles. Its like men and women don’t seem to be interested until it is something to do with Lady gaga! Your individual stuffs nice. At all times deal with it up! ocala fl jewelry

Avatar_small
ch 说:
2021年12月01日 18:38

Best work you have done, this online site is truly cool with incredible truths. Facebook Marketing

Avatar_small
ch 说:
2021年12月19日 18:47

Much thanks to you a cluster for offering this to every one of us you really acknowledge what you are discussing! Bookmarked. It would be ideal if you additionally look for exhortation from my site =). We could have a hyperlink change contract between us! https://voyance-tel-avenir.com

Avatar_small
Harry 说:
2021年12月31日 20:19

I read this article. I think You put a great deal of exertion to make this article. I like your work. 바카라사이트

Avatar_small
ch 说:
2022年1月01日 00:38

Decent to peruse your article! I am anticipating sharing your undertakings and encounters. 먹튀검증사이트

Avatar_small
ch 说:
2022年1月06日 19:10

There are 91 Indigo jobs advertised on WhatJobs in January 2022. Apply online today and set up job alerts to get the latest jobs by email direct to your inbox. WhatJobs

Avatar_small
ch 说:
2022年1月08日 03:44

There are 12 Marriott hotel jobs in Augusta advertised on WhatJobs in January 2022. Jobs for Marriott hotel in Augusta

Avatar_small
ch 说:
2022年1月12日 18:58

There are 8 Usps jobs in Columbia advertised on WhatJobs in January 2022. All Usps jobs in Columbia

Avatar_small
ch 说:
2022年1月22日 01:23

It is basic that we read blog entry painstakingly. I am as of now done it and find this post is truly astounding. Urf Kench

Avatar_small
ch 说:
2022年1月22日 18:55

FORMER OBAMA ADVISER STOLE SCHOOL CASH FOR MULTI-MILLION MORTAGE US job search

Avatar_small
ch 说:
2022年1月22日 19:18

Your article has provoked a ton of positive hobby. I can see why since you have made such a decent showing of making it intriguing. How to get better ping in fortnite

Avatar_small
ch 说:
2022年1月26日 05:53

Incredible post I might want to thank you for the endeavors you have made in composing this fascinating and learned article. Wiliams Loans Putney UK Equity Release

Avatar_small
ch 说:
2022年1月26日 05:53

Keep doing awesome read few posts on this site and I consider that your web journal is exceptionally fascinating and has sets of fabulous data. FinanceHub London Halifax

Avatar_small
ch 说:
2022年1月26日 05:53

Extraordinary Article it its truly enlightening and creative update us as often as possible with new upgrades. its was truly important. much obliged. Frequent Finance Putney Age Partnership

Avatar_small
ch 说:
2022年1月28日 18:31

valuable data on themes that bounty are intrigued on for this great post.Admiring the time and exertion you put into your b!.. www.botschaftkongobzv.de

Avatar_small
ch 说:
2022年1月30日 03:46

There are 407 Pepsico jobs advertised on What jobs in January 2022. Apply online today and set up job alerts to get the latest jobs by email direct to your inbox. career pepsico

Avatar_small
Harry 说:
2022年2月01日 22:12 Wow, excellent post. I'd like to draft like this too - taking time and real hard work to make a great article. This post has encouraged me to write some posts that I am going to write soon. qiu qiu online
Avatar_small
ch 说:
2022年2月04日 23:53

WORKERS AT PRIVATE COMPANIES HAVE SAVED MORE THAN $400 MILLION IN STATE-RUN RETIREMENT PROGRAMS Whatnews

Avatar_small
ch 说:
2022年2月08日 04:14

You rock for sharing us about this redesign. Trust you won't get tired on making posts as instructive as this. Aluminum screen printing screens

Avatar_small
white hat seo 说:
2022年2月16日 02:32

Im obliged for the article. Really thank you! Great.

Avatar_small
ch 说:
2022年2月16日 20:49

There are 2425 Ups jobs advertised on WhatJobs in February 2022. Apply online today and set up job alerts to get the latest jobs by email direct to your inbox. Ups job search in US

Avatar_small
ch 说:
2022年2月26日 03:33

There are 43 Ingilizce jobs advertised on What jobs in February 2022. Apply online today and set up job alerts to get the latest jobs by email direct to your inbox. ingilizce çeviri

Avatar_small
ch 说:
2022年2月28日 00:31

I truly adored perusing your website. It was extremely all around composed and straightforward. Not at all like different online journals I have perused which are truly not that good.Thanks alot! easyslots

Avatar_small
ch 说:
2022年2月28日 05:28

The site is looking piece garish and it gets the guests eyes. Outline is really straightforward and a decent easy to use interface. เครดิตฟรี 100 120

Avatar_small
ch 说:
2022年3月04日 04:03

This is an awesome motivating article.I am practically satisfied with your great work.You put truly extremely supportive data. Keep it up. Continue blogging. Hoping to perusing your next post. สล็อต

Avatar_small
ch 说:
2022年3月05日 00:37

There are 609 Club jobs advertised on WhatJobs in March 2022. Apply online today and set up job alerts to get the latest jobs by email direct to your inbox. Posti di lavoro per Club in Italia

Avatar_small
ch 说:
2022年3月08日 23:14

Extremely fascinating online journal. Alot of websites I see nowadays don't generally give anything that I'm keen on, yet I'm most definately intrigued by this one. Recently believed that I would post and let you know. betflik 666

Avatar_small
ch 说:
2022年3月25日 02:33

much obliged to you for an awesome post. total sports apparel

Avatar_small
ch 说:
2022年4月08日 02:46

This is such an incredible asset, to the point that you are giving and you give it away for nothing. I cherish seeing blog that comprehend the quality. Im happy to have discovered this post as its such a fascinating one! I am dependably vigilant for quality posts and articles so i assume im fortunate to have discovered this! I trust you will be including more later on... read here

Avatar_small
Teacup puppy for sal 说:
2022年4月09日 19:25

Thank you very much for this great post.

Avatar_small
ch 说:
2022年4月10日 03:20

Much obliged to you for some other enlightening site. The spot else might just I understand that sort of data written in such a flawless strategy? I have an endeavor that I am essentially now running on, and I've been at the look out for such information. visit here

Avatar_small
amelia 说:
2022年4月10日 03:54

Great article, much obliged for assembling this! This is clearly one incredible post. A debt of gratitude is in order for the important data and bits of knowledge you have so given here. visit this site

Avatar_small
amelia 说:
2022年4月13日 01:43

I know your expertise on this. I must say we should have an online discussion on this. Writing only comments will close the discussion straight away! And will restrict the benefits from this information. 5g999.co

Avatar_small
ch 说:
2022年4月15日 02:56

Quality Links Is The Most Important Part Of SEO , And To Do That MY Service Is Standing Right Next To You Shoulder To Shoulder, So You Can Achieve Your Goal More Easily. We Work Hard For Your Success. seo

Avatar_small
DewaQQ 说:
2022年4月18日 03:57

A round of applause for your blog. Really thank you! Fantastic.

Avatar_small
amelia 说:
2022年5月08日 03:41

hi!! Exceptionally fascinating discourse happy that I went over such educational post. Keep doing awesome. Happy to be a piece of your net group. St. Augustine Grass Expert

Avatar_small
amelia 说:
2022年5月19日 00:12

I haven't any word to value this post.....Really i am awed from this post....the individual who make this post it was an extraordinary human..thanks for imparted this to us. slot

Avatar_small
amelia 说:
2022年5月19日 19:03

I got what you mean , a debt of gratitude is in order for posting .Woh I am cheerful to discover this site through google. elderly care providers

Avatar_small
royalgreen 说:
2022年5月31日 21:48

Thanks so much for the blog post. Really thank you! Much obliged.

Avatar_small
amelia 说:
2022年6月14日 18:18

I as of late went over your website and have been perusing along. I thought I would leave my first remark. I don't comprehend what to say with the exception of that I have appreciated perusing. Pleasant online journal. I will continue going to this web journal regularly. best place to buy gbl

Avatar_small
amelia 说:
2022年6月16日 04:26

Much obliged for posting this information. I simply need to tell you that I simply look at your site and I discover it exceptionally fascinating and educational. I can hardly wait to peruse bunches of your posts. Foot Care

Avatar_small
amelia 说:
2022年6月24日 01:26

This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here! keep up the good work landscape lighting companies

Avatar_small
amelia 说:
2022年6月26日 01:02

I respect this article for the all around looked into substance and magnificent wording. I got so included in this material that I couldn't quit perusing. I am awed with your work and expertise. Much thanks to you to such an extent. best free online courses with certificates


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter