Tag: ferror

如何在fgets中使用feof和ferror(C中的minishell)

我写过这个minishell,但我不确定我是否正确控制错误。 我知道fgets可以返回feof和ferror( http://www.manpagez.com/man/3/fgets/ ),但我不知道如何使用它们。 我已经检查过fgets是否返回一个空指针(表示缓冲区的内容是inditerminate),但我想知道如何使用feof和ferror。 #include #include #include #include #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); […]

无法在C中创建shell(Seg-Fault和ferror)

我一直在关注如何制作自己的shell的教程,但我已经被困了几天了。 两件事情: 编译和运行此代码时,它将随机出现分段错误,我无法弄清楚原因。 if语句`if(ferror!= 0)`似乎总是如此。 这很奇怪,因为我不明白为什么fgets()在main()函数中失败了。 有关这些主题的任何信息(或有关创建此shell的其他主题)将不胜感激。 #include #include #include #include #define MAXSIZE 512 int parseCmd(char *cmd, char *args[]) { printf(“LOGGER: parseCmd(cmd=%s, args=%p)\n”, cmd, args); char cmdDelims[] = {‘ ‘,’>’}; char *cmdReader; cmdReader = strtok(cmd, cmdDelims); int i = 0; while (cmdReader != NULL) { args[i] = strdup(cmdReader); printf(“LOGGER: args[%d]=%s\n”, i, args[i]); cmdReader = strtok(NULL, […]