The C Programming Language

  • 在binary search中,如果全部都是通过ptr来操作原数组,需要注意mid = low + (high - low) / 2.
    • 原因在于指针是不可以相加的。而substraction is legal,结果就是两个指针(往往是同一数组内的)的offset的差值。
  • 对于一个大小为n的数组s,访问它的&s[n](i.e. s+n) is legal,dereferencing it is illegal.然而对于s[-1]是完全illegal。
  • 不要认为一个struct的大小就是所有member大小之和。
    • 为了对齐的要求(内存中),there may be unnamed holes in a structure.
struct {
    char c;
    int i;
};

需要8个bytes,而不是5个。sizeof works properly here.

for (ptr = head; ptr != NULL; p=p->Next) {
}

是walk through linked list idiom.

  • (the ptr type)malloc(sizeof(whatever you want)).malloc的返回值是void,需要显式cast到想要的类型

  • 在C语言中,用-表示空格。printf中,%s的几种变体:%.*s(接参数), %.10s(经测试,只有precision小于字符串长度的时候才有效,没有'.'也无效), %-10s(改为左对齐(默认情况下是右对齐),字符不够用空格补), %15.10s(取10个字符,总共占15个字符长度,不够的用空格补足,right alignment), %-15.10s同上,left alignment.

  • sprintf作用是把一个字符串格式化然后放入一个buffer字符串中,之后就可以使用这个字符串,而不必自己进行对字符数组的操作,十分方便.(buffer must be big enough to receive the result)

  • 实现minprintf的tricky bit is how minprintf walks along the argument list when list doesn't even have a name.

  • scanf: except the 1st, the other arguments, each of which must be a pointer, indicate where the corresponding converted input should be stored.

  • scanf: returning 0 means the next input character does not match the first specification in the format string.The next call to scanf resumes searching immediately after the last character already converted.

  • sscanf: reads from a string instead of the standard input.return the items assigned value successfully.

  • scanf: an input field is defined as a string of non-while space characters; it extends either to the next while space or until the field width.(WHITE-SPACE characters are blank, tab, newline(\n), carriage return(return key), veritcal tab, formfeed(进纸页))

  • No & is used with array name since it is a pointer.

  • scanf skips over white space(blank, tabs, newlines, etc) as it looks for input values.

  • scanf: to read input whose format is not fixed, it is often best to read a line at a time, then pick it apart with sscanf.(nice stratage!)

Example:

while (getline(line, sizeof(line)) > 0) {
    if (sscanf(line, "%d %s %d", &day, monthname, &year) == 3) {
        printf("valid: %s\n", line);
    }else if (sscanf(line, "%d/%d/%d", &month, monthname, &year) == 3) {
        printf("valid: %s\n", line);
    }else {
        printf("invalid %s\n", line);
    }
}
  • binsearch on K & R C:
int binsearch(int x, int v[], int n) {
    int low, high, mid;
    low = 0;
    high = n - 1;
    while (low <= high){
        mid = (low + high)/2;
        if (x < v[mid]) {
            high = mid - 1;
        }else if (x > v[mid]) {
            low = mid + 1;
        }else {
            return mid;//Found match
        }
    }
    return -1;//no match
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容