13得票5回答
C语言中read()和fgets()的区别

我想从stdin流中读取数据。使用read()或fgets()从stdin流中读取是否有任何区别? 我附上了使用fgets和read的两段代码。 使用fgets,我可以轻松地使用Java程序编写并从C程序读取。 使用read和write,我的Java程序挂起等待来自未到达的C程序输出。 我...

13得票5回答
fgets()在末尾包含换行符

fgets(input,sizeof(input),stdin); if (strcmp(input, "quit") == 0){ exit(-1); } 如果我输入 quit,程序并没有退出;我想知道这是为什么。 顺便提一下,input 被声明为 char *input;。

13得票2回答
能否区分fgets返回的错误?

查看ISO C11标准关于fgets §7.21.7.2, 3的内容,其中关于代码概要中返回值已经说明: #include <stdio.h> char *fgets(char* restrict s, int n, FILE* restrict stream); fgets函数...

13得票2回答
使用fgets如何从输入中获取不包括换行符的字符串?

我想在其他地方写入一个输入的字符串,但不知道如何去掉这个字符串中作为stdin和fgets一部分出现的换行符。 char buffer[100]; memset(buffer, 0, 100); fgets(buffer, 100, stdin); printf("buffer is: ...

13得票7回答
比fgets更快地读取一行输入?

我正在编写一个程序,性能很重要但不是至关重要。当前,我正从一个FILE*逐行读取文本,并使用fgets获取每一行。经过一些性能工具的测试,我发现我的应用程序在运行时有20%到30%的时间处于fgets内。 有更快的方法来获取一行文本吗? 我的应用程序是单线程的,没有使用多个线程的意图。输入可...

13得票5回答
使用C语言中的fgets和fgetc来读取一行的区别

我需要读取一行文本(以换行符作为终止符),但不能假设其长度。因此,我现在面临两种可能性: 使用fgets函数,并每次检查最后一个字符是否是换行符并将其连续附加到缓冲区中 使用fgetc函数逐个读取每个字符,不时使用realloc重新分配缓冲区大小 直觉告诉我fgetc变体可能会更慢,但...

12得票2回答
使用fgets函数时遇到EOF

我正在编写一个执行某些身份验证操作的函数。我有一个文件,其中包含所有以以下结构构建的用户ID:密码:标志对: Users.txt user_123:a1b2:0 user_124:a2b1:1 user_125:a2b2:2 这是代码:int main(){ /*...*/ ...

12得票2回答
已经关闭写入端的管道,我们需要显式地关闭读取端吗?

我有以下情况: 创建一个管道。 分叉一个子进程。 子进程明确关闭管道的读端并向管道的写端写入数据,并在不关闭任何内容的情况下退出(我认为,exit应该代表子进程关闭所有打开的文件/管道描述符)。 父进程明确关闭管道的写端,并使用fgets从管道的读端读取,直到fgets返回NULL。即完...

11得票3回答
使用C语言中的fgets函数读取文本文件直到文件结尾

在C语言中,使用fgets正确读取文本文件直到EOF的方式是什么?我现在有这个(简化版):char line[100 + 1]; while (fgets(line, sizeof(line), tsin) != NULL) { // tsin is FILE* input ... //...

11得票5回答
在C语言中使用fgets()函数后清除输入缓冲区

#include <stdio.h> int main() { char name[10]; for(int i=0;i<=10;i++) { printf("Who are you? "); if(fgets(name,10,stdin)!=NU...