c_cpp 替代简化的fgets实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 替代简化的fgets实现相关的知识,希望对你有一定的参考价值。
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#define MAXLEN 1024
char * fgets (char *str, int size, FILE *stream);
int main(int argc, char **argv) {
char *fname;
FILE *stream;
int fd;
char *buf = (char *)malloc(MAXLEN * sizeof(char));
if (argc > 1) {
fname = argv[1];
} else {
fname = "./test.txt";
}
fd = open (fname, O_RDWR|O_CREAT, 0644);
if (fd < 0 || fd == 0) {
printf("failed to open or create file.\n");
exit(1);
}
stream = fdopen (fd, "r");
if (!stream) {
printf("failed to open stream.\n");
exit(1);
}
fgets(buf, MAXLEN, stream); // my version of fgets here
fputs(buf, stdout);
}
char * fgets (char *str, int size, FILE *stream) {
int c = 0;
char d = '\n';
int n = size;
char *s = str;
while (--n > 0 && (c = fgetc (stream)) != EOF && (*s++ = c) != d) {
if (c == d)
*--s = '\0';
else
*s = '\0';
}
return s;
}
以上是关于c_cpp 替代简化的fgets实现的主要内容,如果未能解决你的问题,请参考以下文章
c语言gets()函数与它的替代者fgets()函数
fgets函数和缓冲区示例
c_cpp 替代排序
c_cpp 单链表中的替代奇数和偶数节点
c_cpp BrickstorOS和illumos系统的替代ps命令
c_cpp ROOT TH1类的简化基本功能