标签 知识 下的文章

C printf()和scanf()的*修饰符

关于printf()scanf()有个神奇的*修饰符,他和通配其实没什么关系,而且printfscanf的作用不一样,所以一个个来看吧。

#include <stdio.h>

int main(void)
{
    unsigned width, precision;
    int number = 256;
    double weight = 242.5;

    printf("What field width?\n");
    scanf("%d", &width);
    printf("The number is: %*d: \n", width, number);
    printf("Now enter a width and a precision: \n");
    scanf("%d %d", &width, &precision);
    printf("Weight = %*.*f\n", width, precision, weight);
    return 0;
}

- 阅读剩余部分 -

C 总结一下 类型与格式说明符对应表

可能会有错吧,因为光一张基本类型表感觉还是一团糟。

int %d
double/float %f
long %ld
long long %lld
char %c
short %hd
unsigned int %d
unsigned short %hu
八进制short %ho
unsigned long %lu
long double %Lf
十六进制long double %la (最后p10 表示2^10 p 表示2的指数)
指数计数法 %e (E10 表示10^10)
浮点型%g http://codesky.me/archives/c-percentg.wind

八进制 %0
十六进制 %x
前面加#如%#0则会输出如0111 %#x 如 0x2f

C 回车符\r的效果

\r叫回车符,一直没明白,回车和换行有什么区别,从理解上,回车按下去,不就换行了吗。不过亲自尝试一下,会发现截然不同。

#include <stdio.h>

int main(void)
{
    float salary;

    printf("\aEnter your desired monthly salary: ");
    printf("$_______\b\b\b\b\b\b\b");
    scanf("%f", &salary);
    printf("\n\t$%.2f a month is $%.2f a year.", salary, salary * 12.0);
    printf("\rGee!\n");
    return 0;
}

- 阅读剩余部分 -

C 转义字符序列

\a 响铃符
\b 回退符
\f 换页符
\n 换行符
\r 回车符
\t 横向制表符
\v 纵向制表符
\\ 反斜杠
\? 问号
\' 单引号
\" 双引号
\ooo 八进制数
\xhh 十六进制数
\0 空字符(NULL)

其中\ooo代表1-3个八进制数,\xhh代表一个或多个十六进制数。
举例可见http://codesky.me/archives/c-variable-const-type.wind

NULL表示值为0的字符,其数字值是0
字符串内部使用一个空字符\0作为结尾,所以储存字符串的物理单元比双引号内的字符数多一个。

可见:http://codesky.me/archives/c-variable-const-type.wind

C 格式说明

%d 按照十进制整数型打印
6d 按照十进制整数型打印,至少6个字符宽
%f 按照浮点数打印
%.2f 按照浮点数打印,小数点后有两位小数

什么是字符宽请见:http://codesky.me/archives/c-str-width.wind

printf()还支持以下格式:
%o 表示八进制数
%x 表示十六进制数
%s 表示字符串
%% 表示百分比

复习一下PHP中:

八进制符号数值前加0;十六进制加0x。
表达式计算结果都以十进制输出。

From:http://codesky.me/archives/php-scalar-type.wind

C 变量与常量 数据类型

终于正式开始学C做笔记了 本来想一长篇说点的,想想还是边看边记,记得少点搜索起来方便。

变量与常量的命名规范与PHP类似,常量全部用大写字母,而变量使用小写字母,C也同样区分大小写,命名时不要以下划线_开头。局部变量一般使用较短的变量名,外部变量一般使用较长的名字。

保留字符的问题就不多说了,差不多就是那回事。

- 阅读剩余部分 -

C 规范注释方法

标准C中的注释方法只有/* */一种,虽然code::blocks或者vs都吃// rcomment,不过还是不规范……题目中发现的问题。

C 外部变量的使用

书中看到这样一段目前仅仅根据自己的理解mark一下,说不定理解的不正确。

外部变量似乎和全局变量是差不多一个意思的(函数中的局部变量在C中称作自动变量)。

外部变量必须定义在所有函数之外,且只能定义一次,这点很好理解,变量自然是唯一的,在每个需要访问外部变量的函数中,必须声明相应的外部变量,此时说明其类型。

显示声明用extern,某些情况下可以省略,那就是外部变量的定义出现在他所使用的函数前(先定义在使用,我觉得在正常不过)。

举个例子:

- 阅读剩余部分 -

PHP each() list() 的作用与遍历数组

each()在一篇文章看到的时候第一反应:有点印象,但具体是干什么的已经记不起来了,查了手册之后:

返回数组中当前的键/值对并将数组指针向前移动一步

next的区别估计就在于是否返回值了,一个是键值对,一个是值,并且next()中有一句话:

Note: 你将无法区别包含数组尾以及 boolean FALSE 单元的数组。要正确遍历可能含有空单元或者单元值为 0 的数组,参见 each() 函数。

看来next()有一定限制条件。

- 阅读剩余部分 -

MYSQL 从更换域名复习到的replace

还是手贱去买了那个域名,接下来我们要做的就是更换那些连接了,如果不使用SQL,更换是非常费劲的一件事情,而现在可以用语句来解决了,首先找到大致的位置,比如这次,我们找到数据库的表typecho_contents里记录的就是文字内容,可是如果用UPDATE ... WHERE ..=..用的是完全匹配,要用LIKE吗?我以前似乎也不是这样做的,去看了一下以前搬家的博文,看到了replace(),如法炮制。

Update 表名 SET 要替换的列=REPLACE(要替换的列,被替换的字符,替换后的字符)

于是用

UPDATE typecho_contents set text=replace(text, 'test.xsky.me', 'test.codesky.me');
UPDATE typecho_options set text=replace(value, 'learn.xsky.me', 'codesky.me');
UPDATE typecho_contents set text=replace(text, 'learn.xsky.me', 'codesky.me');

- 阅读剩余部分 -