C语言和HTTP的一点东西

我貌似并不像自认为的那样乐于助人。。。之前有过几个人来问我怎么用C语言发送HTTP的GET或者POST请求,我都一概回答i dunno。。。直到今天我突然有兴趣想了解一下的时候,才去google了一把。。。

很简单的东西,知道curl吧,有一个libcurl,就是要用它了。。。

#include <curl/curl.h>

int main(int argc, char *argv[])
{
  const char *url = "http://abitno.linpie.com";
  CURL *curl;
  CURLcode res;

  if (curl = curl_easy_init()) {
    res = curl_easy_setopt(curl, CURLOPT_URL, url);
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
  }

  return 0;
}

READ MORE>>

从1m15.605s到0m0.053s

事情源于昨天晚上butterfly的一个问题:找出一个文本文件中最长的一行,Find the longest line in a text file

由于我上大学后一些错误的观念,所以对算法极其的不重视。现在我所做的就是从头开始顺序读取,然后使用不同的编程语言看看效果。还是先看看結果吧:

环境:文件list.txt是一个16M的纯文本,测试的编程语言(当然有些不能说是编程语言)包括bash、ruby、gawk、python、wc、C(C写出来的效率竟然是wc命令的10多倍)

顺序:从最慢的bash到最快的C

1、BASH脚本

#FILE: long.sh, Author: ABitNo
#!/bin/bash
max=0
while read line; do
  if [ ${#line} -gt $max ]; then
    max=${#line}
    longest=$line
  fi
done
echo $max, $longest
exit 0

READ MORE>>

用GTK的GtkTreeView实现表格

本文是用GTK和MySQL完成学生信息管理系统的第三部分

这里不打算讲GTK的基本用法,因为GTK的官方已经有很好的文档了,我比较推荐的是The GTK+ tutorial,上面说的都很详细,另外官方的文档也应该要看一下的。

现在这个程序依然是要用C语言来实现,当然GTK还可以与其他语言(Python, Ruby, C++等)来配合,如果不明白C语言应该也可以看懂其中的含义。下面就列出关键的一段代码

void append_values_to_list(GtkWidget *list,
        gint *colums,
        GValue *values,
        gint num_column) {

    GtkListStore *store;
    GtkTreeIter iter;

    store = GTK_LIST_STORE(gtk_tree_view_get_model
            (GTK_TREE_VIEW(list)));
    gtk_list_store_append(store, &iter);

    gtk_list_store_set_valuesv(store, &iter, colums, values, num_column);
}

READ MORE>>

Linux下C语言连接MySQL

本文是用GTK和MySQL完成学生信息管理系统的第二部分。

这次就不啰嗦了,直接入正题,用一个简单的实例讲解在Linux下用C语言操作MySQL

1、创建示例数据库和数据表

CREATE DATABASE abitno;
USE abitno;
CREATE TABLE abitno (
name VARCHAR(10) NOT NULL,
site VARCHAR(50) NOT NULL
);

上面新建了一个示例数据表abitno,都是最基本的SQL。

2、垒代码

数据库的基本操作就是INSERT, UPDATE, DELETE, SELECT,下面就介绍一下,其中INSERT, UPDATE, DELETE是一样的,因为这三个都是对数据进行了操作,并不期望有什么数据返回,所以ABitNo用同一个函数exe_sql来实现这三个操作;对于SELECT,ABitNo写了另一个方法query_sql. 下面就把代码列出来,有注释,不明白的ABitNo愿意解答。

READ MORE>>

Glade 3与GTK+-2入门

本文是用GTK和MySQL完成学生信息管理系统的第一部分

GTK是完全按照面向对象思想设计的一套组件,如果你用过java的Swing那就应该会很容易的理解这个东西。按我现在的水平,我只当GTK就是些图形组件。Glade是可以让你用拖拽的方式来给GTK这些组件进行布局的,用过Netbeans进行Swing设计的应该会明白,当然如果你用过垃圾的VC(ABitNo坚决讨厌这些东西)什么的也会明白。不过不明白也没关系,下面就一切从0开始讲解。

现在ABitNo假设读者会用c,gcc,make。不过不会的话还是没有关系,下面会把每一步需要的命令都列出来。

1、准备开发环境

Linux,GTK+-2,Glade 3.6,gcc,make,Glib2,MySQL

上面这些东西并不是现在就都会用到,是以后的文章中会用到的。由于这些都不是重点,所以就不详细介绍了,如有不明白的就留言,ABitNo愿意帮忙。

2、认识Glade

当你打开Glade3时,会出现一个Unsaved 1的对话框,这个是让你选择现在这个Project的一些基本属性。这里就按照默认的,不要修改。

READ MORE>>

用GTK和MySQL完成学生信息管理系统

今天终于要在博客上垒代码了!我现在学习过的东西不多,都是入门级的水平,如果是大牛就不需要关注这里了,当然您若肯给ABitNo进行指点,那我不胜感激。

先上图看看我的小成果
student-gtk1

READ MORE>>