C语言getline函数用法
时间: 2023-09-14 18:11:35 浏览: 1371
C语言中的getline()函数可以用于从标准输入流(stdin)中读取一行数据。该函数的原型如下:
```c
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
```
其中,lineptr是一个指向字符指针的指针,用于存储读取到的数据;n是一个指向size_t类型的指针,用于存储lineptr指向的缓冲区的大小;stream是一个指向输入流的指针,通常为stdin。
该函数的返回值为ssize_t类型,表示读取到的字符数(包括结尾的换行符),如果读取失败则返回-1。
使用getline()函数的步骤如下:
1. 申请一个指向字符指针的指针和一个指向size_t类型的指针,用于存储读取到的数据和缓冲区的大小。
2. 调用getline()函数读取数据,传入上述两个指针和输入流。
3. 处理读取到的数据,例如去掉结尾的换行符。
4. 释放申请的内存空间。
下面是一个示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *line = NULL;
size_t len = 0;
ssize_t read;
printf("Please input a line of text:\n");
read = getline(&line, &len, stdin);
if (read == -1) {
printf("Failed to read input.\n");
} else {
printf("Read %zd characters:\n", read);
printf("%s", line);
}
free(line);
line = NULL;
return 0;
}
```
在上述示例中,我们首先定义了一个指向字符指针的指针line和一个指向size_t类型的指针len。然后调用getline()函数读取输入数据,传入line、len和stdin作为参数。在输出读取到的数据之前,我们判断了getline()函数是否读取成功。最后释放了申请的内存空间。
注意,在处理读取到的数据时,需要注意结尾的换行符,可以使用strtok()函数去掉。同时也需要注意,getline()函数只能在Linux和MacOS系统中使用,在Windows系统中并不支持。
阅读全文