Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1723606
  • 博文数量: 171
  • 博客积分: 11553
  • 博客等级: 上将
  • 技术积分: 3986
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-25 20:28
文章分类

全部博文(171)

文章存档

2012年(2)

2011年(70)

2010年(9)

2009年(14)

2008年(76)

分类: C/C++

2011-08-21 17:14:51

#include
#include
#include
#include
#include
#include

int readline(int fd,char* line,size_t len);
void print_empty_lines(char*);
void print(char*);
void uppercase(char*);

int main(int argc,char** argv)
{
    int fd = g_open("./002.c",O_RDONLY,S_IRUSR);
    if(fd == -1){
        g_print("%s\n",strerror(errno));
        return -1;
    }
    char line[1024];
    while(readline(fd,line,1024) != -1){
       print(line); 
       print_empty_lines(line);
       //uppercase(line);
    }

    close(fd);
    return 0;
}

//read a line of text from file
int readline(int fd,char* line,size_t len){
    memset(line,0,len);
    int i = 0;
    while( i < len - 1){
        int ret = read(fd,line + i,1);
        if(ret == -1 && ret == EINTR) continue;
        if(ret == 0) break;
        if(ret == -1) return -1;
        i++;
        if(line[i - 1] == '\n'){
            line[i - 1] = 0;
            return i;
        }
    }
    return -1;
}

typedef void (*line_func)(char*);

//print each line of text
void print(char* line){
    g_print("%s\n",line);
}

void print_empty_lines(char* line){
    if(strlen(line) <= 0) g_print("This is a blank line\n");
}

void uppercase(char* line){
    GString* lower = g_string_new(line);
    g_string_ascii_up(lower);
    g_print("%s\n",lower);
    g_string_free(lower,TRUE);
}

阅读(1129) | 评论(0) | 转发(0) |
0

上一篇:g_print打印输出

下一篇:AWK的BEGIN和END

给主人留下些什么吧!~~