C语言中 scanf()的返回值是成功读入参数的个数

2008年11月08日 23:01 . 分类 编程相关 . 2 条评论 . 被踩 507 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

忘了是谁前天问的了,本来是打算昨天写的,不过昨天有讲座写,于是乎就改今天写了。

他问我为什么 while(scanf("%d",&a)!=0) 这样的语句不能中断程序。OK,我们知道while()的参数是一个值,而这个值是scanf()函数返回的,所以我们到MSDN里面看一下相关的说明:

Both scanf and wscanf return the number of fields successfully converted and assigned; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. The return value is EOF for an error or if the end-of-file character or the end-of-string character is encountered in the first attempt to read a character.

通过这段话,我们可以知道scanf()的返回值并不是参数的值,而是成功读入参数的个数,举例说明:

scanf("%d%d",&a, &b);

如果a和b都被成功读入,scanf()的返回值是2

如果只有a被成功读入或者只有b被成功读入,scanf()的返回值为1

如果a和b都未被成功读入,scanf()的返回值为0

如果遇到错误或遇到End Of File,scanf()的返回值为EOF。

所以呢,文章开头提到的那句代码是不能正常中断程序的。

C语言 多组数据for循环的一个小技巧

2008年11月05日 22:38 . 分类 编程相关 . 9 条评论 . 被踩 700 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

在OJ做题的时候,我们经常会看到题目说:输入有多组数据。输入的第一行输入一整数N,表示有多少组数据。

这时我们就会写出如下代码来实现这句话:

int i,n;
scanf("%d",&n);
for (i=1;i<=n;i++){
}

这样写没错,但是有一种更好的方法:

int n;
scanf("%d",&n);
for (;n>0;n--){
}

或者(felix提醒)

int n;
scanf("%d",&n);
while(n--){
}

看到了么?使用这个小技巧,就可以让我们节省一个变量。所以,当我们的循环变量不参与循环体的操作时,我们就可以用这个方法来使得程序更加小巧。

过W3C标准(XHTML1.0校验)需要注意的地方

2008年10月19日 9:40 . 分类 网络相关 . 4 条评论 . 被踩 505 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

很多朋友让我帮他们改代码,因为他们的代码总是过不了W3C标准,一次两次还好,但是对于SLYAR这种"懒仙"级别的人来说,太痛苦了。。。今天SLYAR就帮大家总结一下,以后先自查,还不行再找我。。。

1、所有元素和属性名要小写。

2、属性值必须用双引号括起。

3、属性必须有值。

4、标签"p"只能在 applet, blockquote, body, button, center, dd, del, div, fieldset, form, iframe, ins, li, map, noframes, noscript, object, td, th 中使用。

5、标签"li"只能在 dir, menu, ol, ul 中使用。

6、使用等式实体(去掉后面的空格)

&转换为& a m p ;

<转换为& l t ;

>转换为& g t ;

?转换为& q u o t ;

7、闭合字符要使用 />

8、图片必须加上alt=""标签

9、script必须加type="text/javascript"

先写这么多,想起来再说。。。

搜索引擎转向代码,让新站IP数暴涨

2008年10月10日 7:26 . 分类 网络相关 . 15 条评论 . 被踩 476 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

假设你有网站A,以下代码可以使从域名访问网站A正常,而从百度、Google、雅虎搜索进入网站A的来源全部转向到http://www.slyar.com,使得后者的IP大大提升。

有兴趣的人可以自己试试。

<script>
var slyar=document.referrer
if(slyar.indexOf("baidu")>0)
self.location="http://www.slyar.com";
else if(slyar.indexOf("yahoo")>0)
self.location="http://www.slyar.com";
else if(slyar.indexOf("google")>0)
self.location="http://www.slyar.com";
</script>

提高远程连接MySQL的速度

2008年10月09日 23:25 . 分类 数据库相关 . 3 条评论 . 被踩 825 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

今天在远程连接朋友的MySQL服务器时,发现速度爆慢,感觉不太对劲。Google查了一下,发现是MySQL默认开启了DNS反向解析,导致连接的时候损失时间,而DNS反向解析只是在我们用域名去访问MySQL数据库时才起作用,一般我们都是使用IP地址去访问MySQL数据库的,因此我们可以通过关闭DNS反向解析来提高远程连接MySQL数据库的速度。

You can disable DNS host lookup by starting mysqld with --skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.

我们需要修改的是MySQL\bin目录下的my.cnf,有的人是my.ini,都一样的,找到后打开。

在文件末尾加入以下内容:

[mysqld]
skip-name-resolve

这样就可以禁用DNS反向解析,只不过这样就只能使用IP访问MySQL数据库而不能使用域名访问了,不过影响不大。

现在试试连接速度,瞬间连接。。。

手工去掉QQ2008聊天窗口右上角的广告

2008年10月08日 22:26 . 分类 网络相关 . 7 条评论 . 被踩 356 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

今天更新了一下QQ,还是用狂人版的,结果外挂不管用了,聊天窗口右上角的那些恶心的广告又出现了,严重影响了我聊天时的心情,所以我决定手工干掉它。。。怎么干掉它呢?我不会!

Google...Baidu...大神出来帮我啊....找到了!

1、先打开你需要修改的那个皮肤的文件夹里的IMSkin.ini文件,例如我的是"Tencent\Newskins\QQ2008\IMSkin\IMSkin.ini"。意思就是你现在用哪个QQ皮肤,就修改哪个皮肤下的IMSkin.ini文件。

2、然后查找 rightSpace ,找到后把 rightSpace=0 改为 rightSpace=-242 (这里注意242前面有个"-")

3、继续查找 menuShowBand ,然后把 menuShowBand = 1 改为 menuShowBand = 0(空格一定不能省)

4、保存,退出。不放心的话在文件上点击鼠标右键选属性,加上只读属性,去掉存档,完成!

这下QQ终于干净了一些,恩,不错不错。。。

关闭
E-mail It