我正在尝试使用c函数从给定的FILE *中读取新行*让我们假设指针已被预先分配。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int getLine(char** string, FILE* stream);
int main(){
char* a = (char*) malloc(10);
getLine(&a, stdin);
printf("%s\n", a);
free(a);
return 0;
}
int getLine(char** string, FILE* stream){
char* tmp;
unsigned laenge=0u;
if (strlen(*string)>0)
{
free(*string);
*string = (char *) malloc(sizeof(char));
}
do
{
tmp=(char *)realloc(*string,++laenge);
if(tmp==NULL)
{
printf("Allokation fehlgeschlagen\n");
free(*string);
}
*string=tmp;
(*string)[laenge-1]=fgetc(stream);
if (feof(stream))
{
(*string)[laenge-1]='\0';
return EOF;
}
}
while((*string)[laenge-1]!='\n');
(*string)[laenge-1]='\0';
return laenge;
}
在我将其用于作业之前,我需要做到这一点,并且对此我只有一枪。
您的意见对我很有价值。
如果可能有帮助,我必须坚持C89标准,而我正在使用gcc -ansi -pedantic -Wall
来编译我的代码
我建议使用fgets
而不是尝试编写自己的函数来从FILE
指针读取行,因为fgets
最多将n
个字符读入缓冲区字符串,并在遇到换行符时停止读取。