gpt4 book ai didi

C fgets 读取行

转载 作者:行者123 更新时间:2023-11-30 15:26:20 27 4
gpt4 key购买 nike

请帮我,如何通过 fgets 从 stdin 读取行?问题是,有时在 tmp_string 中存储了之前两行的部分数据等...我使用此代码来加载行:

int loadLine(Line *line) {
char tmp_string[MAX_LOAD];
int return_val;
return_val = 0;
line->length = MAX_LOAD;
line->index = 0;
line->data = (char*) malloc(sizeof (char) * line->length);

while (fgets(tmp_string, MAX_LOAD - 1, stdin) != NULL) {
strncat(line->data, tmp_string, MAX_LOAD);
line->index += strlen(tmp_string);
if (tmp_string[strlen(tmp_string) - 1] == '\n') { /* if I'm at the end of line... */
line->data[strlen(line->data) - 1] = '\0';
return_val = 1;
break;
}
if ((line->index + MAX_LOAD) > line->length) {
resizeLine(line);
}

}

if(feof(stdin))
{
return_val = 0;
}

return return_val;
}

这是用法:

Line line;
if(loadLine(&line) == 0){ ... }
free(line.data);

最佳答案

line->data 尚未初始化(无终止符),因此 strncat() 可能会失败。

line->data = malloc(sizeof (char) * line->length);
line->data[0] = 0;

关于C fgets 读取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com