gpt4 book ai didi

c - 使用 fgets() 检测 EOF,其中 filesteam 是标准输入

转载 作者:太空狗 更新时间:2023-10-29 16:01:17 26 4
gpt4 key购买 nike

一些背景知识,我正在编写一个玩“盒子”游戏的程序,它在 linux 命令行中运行并用 C 编写。有一个等待用户输入的提示,然后用 fgets() 读取并解释等等

作为任务规范的一部分,如果我到达“等待用户输入时文件结束”,我必须返回一个特定的错误。我知道 fgets() 在到达 EOF 时返回 null ... 但是说我有

fgets(输入,max_buffer,stdin);

在提示循环中,如果用户过早退出,说是使用 CTRL+C 或 CTRL+D,这是否意味着输入 == NULL?

我什至可以检测到用户何时使用 fgets 执行此操作吗?

我只是想解决这个问题,在此先感谢您的帮助。

(操作系统:UNIX)(编译器:gcc - c90)

最佳答案

来自 here , fgets:

Reads characters from stream and stores them as a C string into str until (num-1) characters have been read or either a newline or the end-of-file is reached, whichever happens first.

A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to str.

A terminating null character is automatically appended after the characters copied to str.

因此,fgets 将在用户输入 CTRL-D(文件结束)时返回,当 \n (遇到换行符)。 CTRL-C 将默认完全终止您的程序。

如果你想捕捉 CTRL-C 并优雅地退出,你可以:

#include <signal.h>

void intHandler(int dummy) {
//graceful CTRL-C exit code.
}

int main(void) {
signal(SIGINT, intHandler);
//your code
}

关于c - 使用 fgets() 检测 EOF,其中 filesteam 是标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32040526/

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