亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

基于getline()函數的深入理解

2020-01-26 16:08:08
字體:
來源:轉載
供稿:網友

我在網上搜了半天getline()函數,大多針對C++的,重載函數比較多,云里霧里的,而且沒有實例,反正就是沒有自己所需要的getline()函數。所以,自己在Linux下man了一把,并做了測試。getline()函數的功能是從文件中獲取行信息,即每次讀取一行信息。

因為我使用getline()函數的目的是獲取本地網卡信息,即eth0的信息,從而判斷啟動機子時是否查了網線(本來可以從驅動里做,但應用層可以搞定,就不想多做處理了,諒解)。

//函數原型
#define _GNU_SOURCE
#include <stdio.h>
      ssize_t getline(char **lineptr, size_t *n, FILE *stream);
      ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE*stream);
[root@localhost for_test]# cat dev
Inter-|   Receive                                                | Transmit
 face |bytes   packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carriercompressed
   lo:       0       0   0    0    0    0          0         0        0      0    0    0   0     0       0         0
 eth0:  53311     230    0    0   0     0          0        0     5370      33   0    0    0    0       0          0
[root@localhost for_test]# cat eth0_dev.c

復制代碼 代碼如下:

#include <stdio.h>
#include <string.h>
int main(void)
{
 FILE *fp = NULL;
    int cnt = -1;
    int len = 0;
 char buf1[16] = {0}, buf2[16] = {0}, buf3[16] = {0};
    char *line = NULL;
    char *pstr = NULL; 
 fp = fopen("./dev", "rb");
 if(NULL == fp)
 {
  printf("open /proc/net/dev err!/n");
  return -1;
 }
    while(-1 != (cnt = getline(&line, &len, fp)))//讀取行信息,'/n'為換行標志
    {
        pstr = strstr(line, "eth0");//查找改行中是否有"eth0"的字符串
        if(NULL != pstr)
        {
   //printf("%s/n", pstr);
   sscanf(pstr, "%s/t%s/t%s", buf1, buf2, buf3);
   printf("buf1:%s  buf2:%s  buf3:%s/n", buf1, buf2, buf3);
   break;
        }
    }
    //確??臻g的釋放
    if(line)
    {
        free(line);
    }
    fclose(fp);
 return 0;
}

[root@localhost for_test]#gcc eth0_dev.c
[root@localhost for_test]# ./a.out
buf1:eth0:  buf2:53311 buf3:230
[root@localhost for_test]# man getline
復制代碼 代碼如下:

DESCRIPTION
       getline()  reads  an entire line from stream, storing the address of the buffer containing the text into *lineptr.  The buffer is null-
       terminated and includes the newline character, if one was found.
       If *lineptr is NULL, then getline() will allocate a buffer for storing the line, which should be freed by the user  program.   Alterna-
       tively,  before calling getline(), *lineptr can contain a pointer to a malloc()-allocated buffer *n bytes in size. If the buffer is not
       large enough to hold the line, getline() resizes it with realloc(), updating *lineptr and *n as necessary. In either case,  on  a  suc-
       cessful call, *lineptr and *n will be updated to reflect the buffer address and allocated size respectively.
       getdelim()  works  like  getline(), except a line delimiter other than newline can be specified as the delimiter argument. As with get-
       line(), a delimiter character is not added if one was not present in the input before end of file was reached.
RETURN VALUE
       On success, getline() and getdelim() return the number of characters read, including the delimiter character,  but  not  including  the
       terminating null byte. This value can be used to handle embedded null bytes in the line read.
       Both functions return -1  on failure to read a line (including end of file condition).
ERRORS
       EINVAL Bad parameters (n or lineptr is NULL, or stream is not valid).
EXAMPLE
       #define _GNU_SOURCE
       #include <stdio.h>
       #include <stdlib.h>
       int main(void)
       {
            FILE * fp;
            char * line = NULL;
            size_t len = 0;
            ssize_t read;
            fp = fopen("/etc/motd", "r");
            if (fp == NULL)
                 exit(EXIT_FAILURE);
            while ((read = getline(&line, &len, fp)) != -1) {
                 printf("Retrieved line of length %zu :/n", read);
                 printf("%s", line);
            }
            if (line)
                 free(line);
            return EXIT_SUCCESS;
       }
CONFORMING TO
       Both getline() and getdelim() are GNU extensions.  They are available since libc 4.6.27.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av免费一区| 久久久天堂国产精品女人| 日本久久久久久| 九九视频这里只有精品| 久久久91精品国产| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久精品国产亚洲| 欧美日韩高清在线观看| 91精品视频在线看| 青青青国产精品一区二区| 久久精品国产亚洲| 91久久国产婷婷一区二区| 国产精品老女人视频| 精品久久久香蕉免费精品视频| 久久6精品影院| 久久久精品网站| 亚洲国产精品va在看黑人| 97精品视频在线观看| 国语对白做受69| 亚洲视频专区在线| 久久久久久久久爱| 九九热99久久久国产盗摄| 在线电影av不卡网址| 久久人人爽人人爽爽久久| 国产剧情久久久久久| 精品国内自产拍在线观看| 日韩中文字幕在线| 欧美亚洲国产精品| 91亚洲精品久久久| 亚洲bt天天射| 亚洲国产精品久久久久秋霞不卡| 国产香蕉一区二区三区在线视频| 精品国产91久久久| 在线日韩欧美视频| 日韩精品在线免费观看视频| 久久成人一区二区| 国产精品扒开腿爽爽爽视频| 成人亲热视频网站| 精品视频在线观看日韩| 色综久久综合桃花网| www.精品av.com| 亚洲视频在线免费观看| 日韩免费在线免费观看| 日韩网站在线观看| 日韩欧美一区二区在线| 亚洲激情成人网| 亚洲精品美女在线观看播放| 九色精品免费永久在线| 粗暴蹂躏中文一区二区三区| 国语自产精品视频在线看| 成人动漫网站在线观看| 91精品在线观| 国产欧美日韩精品丝袜高跟鞋| 久久国产精品久久久| 欧美亚洲一区在线| 精品视频在线播放色网色视频| 免费91麻豆精品国产自产在线观看| 成人免费视频a| 国产精品福利观看| 亚洲成色www8888| 亚洲xxx自由成熟| 国内免费精品永久在线视频| 欧美性高跟鞋xxxxhd| 少妇高潮久久77777| 亚洲免费精彩视频| 亚洲自拍偷拍区| 日韩av在线电影网| 国产亚洲精品久久久久久777| 日韩av电影手机在线| 欧美亚洲日本网站| 欧美最猛性xxxxx免费| 91免费版网站入口| 亚洲自拍另类欧美丝袜| 国产一区二区在线免费视频| 国产91成人在在线播放| 中文字幕亚洲一区在线观看| 91成人天堂久久成人| 欧美午夜激情小视频| 在线观看欧美日韩国产| 国产成人精品免费久久久久| 日本sm极度另类视频| 国产精品福利在线| 国产精品丝袜久久久久久不卡| 国产精品久久久久国产a级| 2019中文字幕在线观看| 精品女同一区二区三区在线播放| 欧美日韩另类字幕中文| 国内伊人久久久久久网站视频| 最新国产精品拍自在线播放| 国产精品视频地址| 欧美一级视频在线观看| 欧美寡妇偷汉性猛交| 久久国产精品久久久久久久久久| 亚洲国语精品自产拍在线观看| 日韩视频免费看| 98午夜经典影视| 精品无人区太爽高潮在线播放| 国产欧洲精品视频| 日韩中文理论片| 国产玖玖精品视频| 亚洲香蕉伊综合在人在线视看| 5278欧美一区二区三区| 精品国产一区二区三区久久狼5月| 亚洲成人激情小说| 精品香蕉在线观看视频一| 日韩中文字幕在线免费观看| 色无极影院亚洲| 欧美激情第6页| 日韩电影第一页| 国产精品久久久久久久久久久久久久| 成人免费视频在线观看超级碰| 亚洲一区中文字幕| 国产日韩欧美在线| 岛国精品视频在线播放| 国产精品毛片a∨一区二区三区|国| 成人激情在线播放| 尤物九九久久国产精品的分类| 国产成人精品一区二区三区| 久久久久久久久中文字幕| 亚洲开心激情网| 亚洲精品aⅴ中文字幕乱码| 国产精欧美一区二区三区| 亚洲精品之草原avav久久| 国产色婷婷国产综合在线理论片a| 亚洲免费视频观看| 国产精品视频资源| 91黑丝高跟在线| 国产脚交av在线一区二区| 欧美中文字幕在线视频| 韩国福利视频一区| 欧美极品少妇xxxxⅹ喷水| 亚洲视频欧洲视频| 日韩最新免费不卡| 欧美精品精品精品精品免费| 日韩av片电影专区| 欧美在线日韩在线| 中文.日本.精品| 日本国产一区二区三区| 欧美视频一区二区三区…| 2020国产精品视频| 在线视频中文亚洲| 国产盗摄xxxx视频xxx69| 亚洲网站在线播放| 国产精品一区久久久| 色播久久人人爽人人爽人人片视av| 在线电影av不卡网址| 美女少妇精品视频| 欧美日韩在线一区| 欧美视频在线免费看| 伊人伊成久久人综合网站| 久久精品男人天堂| 精品视频一区在线视频| 一区二区亚洲欧洲国产日韩| 国产欧美精品日韩| 久久久久久久久久久av| 中文字幕在线视频日韩| 精品丝袜一区二区三区| 4438全国亚洲精品在线观看视频| 久久99精品久久久久久噜噜| www.99久久热国产日韩欧美.com| 韩国国内大量揄拍精品视频| 色樱桃影院亚洲精品影院| 中文字幕日韩欧美在线| 91香蕉国产在线观看|