Tag: stdin

C:从stdin读取,直到按两次Enter键

考虑一个简单的程序。 它必须从stdin中获取5个数字的序列并打印它们的总和。 没有说明将采用多少行输入,但如果换行符被取两次(或按两次Enter键),程序必须终止。 例如, 输入: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3/n /n 输出: 5 10 15 #include int main() { int n1, n2, n3, n4, n5; int sum; while (/*condition*/) { scanf (“%d %d %d %d %d\n”, &n1, &n2, &n3, &n4, &n5); sum = n1 + […]

C中的fgets()函数

我知道每个人都告诉我使用fgets而不是因为缓冲区溢出而得到的。 但是,我对fgets()的第三个参数感到有点困惑。 据我了解,fgets依赖于: char * fgets ( char * str, int num, FILE * stream ); char* str是我的输入存储位置的ptr。 num是要读取的最大字符数。 但什么是FILE *stream ? 如果我只是提示用户输入字符串(如句子),我应该输入“ stdin ”吗? 我应该在main()附近的顶部键入FILE *stdin吗?

使用select来读取socket和stdin

我正在写一个基于ncurses的聊天程序。 起初,我只编写网络内容(没有ncurses),一切正常,但添加图形后,我无法使客户端应用程序正常工作。 主要问题是同时从stdin和socket读取。 在ncurses-less版本中,我使用了pthread,它就像魅力一样。 唉,似乎pthread和ncurses没有很好地结合在一起,所以我不得不寻找另一种解决方案。 我认为select()会这样做,但它仍然只从stdin读取并完全忽略套接字。 这是整个代码: 代码 有趣的是: char message[1024]; fd_set master; fd_set read_fds; FD_ZERO(&master); FD_ZERO(&read_fds); FD_SET(0,&master); FD_SET(s,&master); // s is a socket descriptor while(true){ read_fds = master; if (select(2,&read_fds,NULL,NULL,NULL) == -1){ perror(“select:”); exit(1); } // if there are any data ready to read from the socket if (FD_ISSET(s, &read_fds)){ n = read(s,buf,max); buf[n]=0; […]

如何写入执行过程的标准输入?

我正在尝试执行从stdin读取的进程。 我想用一些数据准备stdin,以便它可以成功执行。 我怎样才能做到这一点?

从stdin中读取字符串的长度

我想从stdin中取一个字符串,但我不想要一个固定大小的静态数组 我知道scanf需要保存stdin输入的东西,但我不能这样做: char string[10] scanf(“%s”,string); 因为我需要知道字符串需要多长时间才能分配正确的内存空间。 你能帮我解决这个问题吗? woooooooo 我仍然对这个问题感到困惑……我疯了 你能告诉我工作代码吗?

如何在C中使用EOF stdin

我需要将坐标输入到数组中,直到遇到EOF,但我的代码中出现了错误。 我用ctrl + Z,ctrl + D. int main() { int x[1000],y[1000]; int n=0,nr=0,a,b,i; printf(“Enter the coordinates:\n”); while(scanf ( “%d %d “, &a, &b) == 2) { x[n]=a; y[n]=b; n++; } if (!feof(stdin)) { printf(“Wrong\n”); } else { for(i=0;i<n;i++) printf("%d %d\n", x[i], y[i]); } return 0; }

如果调用fclose(0),这会关闭stdin吗?

如果调用fclose(0),这会关闭stdin吗? 我问这个的原因是由于某种原因,stdin在我的应用程序中被关闭,我无法找出原因。 我检查了fclose(stdin),这不在应用程序中,所以我想知道fclose(0)是否会导致未定义的行为,如关闭stdin? 如果没有,stdin可能被错误关闭的其他方式是什么?

C和Erlang:Erlang Port示例

免责声明:该问题的作者具有Erlang的平均知识和C的基本知识。 我现在正在阅读互操作性教程用户指南 。 我已成功编译了complex.c示例,它与Erlang端口一起使用没有任何问题。 但是,我想了解实际的C代码是如何工作的。 我一般都理解它:在示例中,它从标准输入读取2个字节并检查第一个字节。 根据第一个字节,它调用foo或bar函数。 这是我现在对它的理解的极限。 所以,如果我们同时使用erl_comm.c : /* erl_comm.c */ typedef unsigned char byte; read_cmd(byte *buf) { int len; if (read_exact(buf, 2) != 2) return(-1); len = (buf[0] <> 8) & 0xff; write_exact(&li, 1); li = len & 0xff; write_exact(&li, 1); return write_exact(buf, len); } read_exact(byte *buf, int len) { int i, […]

在C中逐行读取管道

如何分离来自管道的线。 在管道中有这样的文字: HALLO:500\n TEST:300\N ADAD ADAWFFA AFAGAGAEG 我想将管道与管道分开,因为我想将值保存在变量中。 这是我的c代码: #include #include #define BUFFERSIZE 1 int main(int argc, char **argv){ unsigned char buffer[BUFFERSIZE]; FILE *instream; int bytes_read=0; int buffer_size=0; buffer_size=sizeof(unsigned char)*BUFFERSIZE; /* open stdin for reading */ instream=fopen(“/dev/stdin”,”r”); /* did it open? */ if(instream!=NULL){ /* read from stdin until it’s end */ while((bytes_read=fread(&buffer, buffer_size, 1, instream))==buffer_size){ […]

从stdin读取写入C中的stdout

我正在尝试编写一个猫克隆来练习C,我有这个代码: #include #define BLOCK_SIZE 512 int main(int argc, const char *argv[]) { if (argc == 1) { // copy stdin to stdout char buffer[BLOCK_SIZE]; while(!feof(stdin)) { size_t bytes = fread(buffer, BLOCK_SIZE, sizeof(char),stdin); fwrite(buffer, bytes, sizeof(char),stdout); } } else printf(“Not implemented.\n”); return 0; } 我试着echo “1..2..3..” | ./cat echo “1..2..3..” | ./cat和./cat < garbage.txt但我在终端上看不到任何输出。 我在这做错了什么? 编辑:根据评论和答案,我最终这样做: […]