C语言实现getline
时间: 2023-10-16 10:23:08 浏览: 80
OPENGL,求平均成绩c语言源码,c语言程序
C语言中并没有内置的getline函数,但可以通过以下方式实现:
```c
#include <stdio.h>
#include <stdlib.h>
char *getline(void) {
char *line = NULL;
int bufsize = 0; // 初始缓冲区大小
int pos = 0; // 当前位置
int c;
// 分配初始缓冲区
line = (char *)malloc(sizeof(char) * bufsize);
// 逐个读取字符
while ((c = getchar()) != EOF && c != '\n') {
// 如果缓冲区不够用,扩大缓冲区
if (pos >= bufsize) {
bufsize += 64;
line = (char *)realloc(line, sizeof(char) * bufsize);
}
line[pos++] = c;
}
// 添加字符串结束符
line[pos] = '\0';
return line;
}
int main() {
char *line;
while ((line = getline()) != NULL) {
printf("%s\n", line);
free(line);
}
return 0;
}
```
该函数逐个读取字符,如果缓冲区不够用,就扩大缓冲区。最后返回读取到的字符串。在主函数中,可以不断调用该函数读取多行输入。注意要释放每一行的缓冲区。
阅读全文