gpt4 book ai didi

c - 如何将 feof 和 ferror 用于 fgets(C 中的 minishell)

转载 作者:太空宇宙 更新时间:2023-11-04 05:26:59 25 4
gpt4 key购买 nike

<分区>

我写了这个 minishell,但我不确定我是否正确控制了错误。我知道 fgets 可以返回 feof 和 ferror ( http://www.manpagez.com/man/3/fgets/ )但我不知道如何使用它们。

我已经检查过 fgets 是否返回空指针(这表明缓冲区的内容是不确定的),但我想知道如何使用 feof 和 ferror。

    #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define LINE_LEN 50
#define MAX_PARTS 50
int main ()
{
char* token;
char str[LINE_LEN];
char* arr[MAX_PARTS];
int i,j;
bool go_on = true;

while (go_on == true){
printf("Write a line:('quit' to end) \n $:");
fgets(str, LINE_LEN, stdin);

if (str==NULL) {
goto errorfgets;
} else {
size_t l=strlen(str);
if(l && str[l-1]=='\n')
str[l-1]=0;

i=0;
/* split string into words*/
token = strtok(str, " \t\r\n");
while( token != NULL )
{
arr[i] = token;
i++;
token = strtok(NULL," \t\r\n");
}

fflush(stdin);

/* check if the first word is quit*/
if (strcmp(arr[0],"quit")==0)
{
printf("Goodbye\n");
go_on = false;
} else {

for (j=0; j < i; j++){
printf("'%s'\n", arr[j]);
}
}
}
}

return 0;
errorfgets:
printf("fgets didn't work correctly");
return -1;
}

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