分类: C/C++
2012-03-31 22:15:35
源码:
#define _GNU_SOURCE
#include
#include
int main()
{
char *pm = NULL;
size_t len = 0;
ssize_t read;
while(printf("Magic input:") && (read = getline(&pm, &len, stdin)) != -1 )
{
printf("Magic ouput:");
fputs(pm, stdout);
printf("len:%zu\n\n",read);
}
return 0;
}
编程小结:
getline
getline函数可以从文件中读取一行字符,放入字符数组中。
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
**lineptr为指向字符存放地址的指针,字符存放地址可以为NULL,即定义*pp = NULL,则lineptr=&pp即可;
*n为行字符数目的指针,定义int len,则n=&len即可取得行字符数目。
返回值:成功:返回读取的不包含'\0'结束符的字符数目,失败则返回-1(读到文件尾也会返回-1)
使用方法:
头文件
#define _GNU_SOURCE
#include
#include
例子:无限制行输入
#define _GNU_SOURCE
#include
#include
int main()
{
char *pm = NULL;
size_t len = 0;
ssize_t read;
while(printf("Magic input:") && (read = getline(&pm, &len, stdin)) != -1 )
{
printf("Magic ouput:");
fputs(pm, stdout);
printf("\n");
}
return 0;
}