stdio 相关问题

此标记用于有关“标准I / O”的问题,即使用C头<stdio.h>中的工具或使用标准流stdin,stdout,stderr的I / O.

即使添加了 #include <stdio.h>,popen 仍隐式声明

这是我的代码的一小段。 #包括 #包括 #包括 #包括 #包括 #包括 这是我的代码的一小段。 #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <time.h> #include <sys/stat.h> #include <sys/wait.h> #include <sys/types.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> ... FILE * pipe; ... pipe = popen ("ls /tmp -1", "r"); ... pclose(pipe); blarg.c:106: warning: implicit declaration of function ‘popen’ blarg.c:106: warning: assignment makes pointer from integer without a cast blarg.c:112: warning: implicit declaration of function ‘pclose’ blarg.c:118: warning: assignment makes pointer from integer without a cast 我真的不确定。我查了一下popen,它所需要的只是提供的stdio.h。缺少什么,或者是我的代码的其余部分有问题(我真的不想显示更多代码,因为它是一个作业)。 将 -std=c99 或 -std=c11 等替换为 -std=gnu99 或 -std=gnu11。 正如手册页所说: Feature Test Macro Requirements for glibc (see feature_test_macros(7)): popen(), pclose(): _POSIX_C_SOURCE >= 2 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE 所以你应该在#define _BSD_SOURCEing #include之前stdio.h或其他之一。 我在MinGW中遇到了这个问题;在它的 stdio.h 中我发现: #ifndef NO_OLDNAMES _CRTIMP __cdecl __MINGW_NOTHROW FILE * popen (const char *, const char *); _CRTIMP __cdecl __MINGW_NOTHROW int pclose (FILE *); #endif 事实证明,我的 gcc 命令行上有 -DNO_OLDNAMES=1 来修复另一个我什至不记得的另一个源文件中的一些模糊问题。这是我的简单修复: #ifdef NO_OLDNAMES #undef NO_OLDNAMES #endif #include <stdio.h> 正如@Conrad Mayer 等其他人评论的那样。 简洁,只需添加 #define _POSIX_C_SOURCE 200809L // Define this before any includes #include <stdlib.h> ... rest of code ... 解释 popen() 函数是 POSIX 标准的一部分,其声明可能取决于正确定义的功能测试宏。这应该确保 popen() 的必要声明可用。 如果问题仍然存在,您可以尝试在包含标头之前定义 _GNU_SOURCE,因为 popen() 也是 GNU 扩展: #define _GNU_SOURCE #include <stdlib.h> ... 我将 popen 和 pclose 的原型放在代码的顶部。看来问题已经解决了。

回答 5 投票 0

标准库多次包含在多个文件中?

在K&R书(p59)(编辑:第二版,涵盖ANSI C)中,建议将较大的项目拆分为多个文件更容易。在每个文件中,都包含几个库...

回答 2 投票 0

Clang 错误 - 未找到 stddef 文件?

升级到 Ubuntu 13.10“Saucy”后,Clang 现在给出错误消息: clang -Wall -Werror -std=c99 -ggdb -O0 5.1.c -o 5.1 在 5.1.c:1 包含的文件中: /usr/include/stdio.h:33:11:致命...

回答 6 投票 0

将标准输入和标准输出连接到套接字

想象一个正在侦听某个端口的微服务器。它接收以 ASCII 换行符终止的请求并发送以 ASCII 换行符终止的响应。简单的。简单的。 现在想象一个简单的脚本...

回答 1 投票 0

从USB-CDC读取字符串;如何使用stdio_set_chars_available_callback()?

一旦字符可用,我就会尝试在回调函数中使用 stdio 读取通过 USB 传输到 Raspberry Pi Pico 的字符串。我不想轮询界面或使用重复...

回答 1 投票 0

C/C++ | PICO-SDK | Raspberry Pi Pico 使用回调从 USB-CDC 串行读取字符串 |如何使用stdio_set_chars_available_callback()

我尝试使用 stdio 读取通过 USB 传输到 Raspberry Pi Pico 的字符串。 一旦字符可用,就应该在回调函数中读取字符串。我不想...

回答 1 投票 0

scanf() 和 getchar() 工作方式不同

字符a; while(scanf("%c", &a)==1){ } 字符a; while((a = getchar())!=EOF){ } 我以为这两个代码会做同样的事情,但实际上看起来它们是不同的。 他们做...

回答 1 投票 0

eEror 宏名称必须是 #C 中带有标头的标识符

#定义 #定义 #定义 int main(){ 整数a=7; 双 b=3,测试; 测试=a/b; printf("Il testa da come risultato un double, quindi razion...

回答 0 投票 0

为什么我无法使用stddraw画图?

我尝试使用 stddraw 和以下代码简单地绘制图片: def main(): 如果 len(sys.argv) <= 1: stdio.writeln("ERROR: Too few Arguments") else: pic = sys.argv[1] stdd...

回答 1 投票 0

在通过 Node.js 代理 Minecraft 服务器终端时使用除标准输入“继承”以外的任何东西时“高级终端功能不可用”

我一直在尝试为 PaperMC 服务器制作一个包装器来更改对内部事件的处理,但是有一个小问题 - 如果我不设置 stdin: 'inherit' 服务器会抛出此错误或类似错误 ...

回答 0 投票 0

beecrowd代码中可能存在的错误变量

代码显然可以正常工作,但是当插入值 576.73 时,代码无法返回以美分为单位的值。 这是蜂群练习 1021。 #包括 #包括 ...

回答 1 投票 0

AArch64 程序集 _printf 函数在没有 消息后(apple silicon mac)[重复]

我尝试使用 _printf 打印一条消息,但它不会在没有 在消息的末尾 .global_main .p2对齐2 .equ SYS_WRITE, 4 .equ SYS_READ, 3 .equ SYS_EXIT, 1 _main...

回答 0 投票 0

python验证中的命令行输入..代码审查

我正在尝试接受 2 个命令行输入 0 0,即 sys.argv[1] = 0 和 sys.argv[2] = 0,如果不是,则应打印出一系列错误消息。但是我的代码没有打印出...

回答 0 投票 0

node.js,快速服务器,我也需要将我在控制台中看到的 stderr 发送到我的网页

我在这样的故障网站上有一个nodejs express服务器: const express = require("快递"); const app = express(); 常量端口= 3000; const server = app.listen(port, () => 反对...

回答 1 投票 0

undefined symbol: fmemopen when cross-compiling with Android NDK clang

我正在尝试将一个(相当旧的)C 程序编译为 Android ARM64。我已经完成了大部分工作,但有一个功能似乎给我带来了麻烦: ld:错误:未定义的符号:fmemopen 我有...

回答 1 投票 0

这些循环有什么区别?

我是C编程的初学者。 我正在通过“The C programming language second edition”(Brain W.Kerninghan 和 Dennis M.Ritchie)学习 C 在书中我与练习 1-10 ......

回答 1 投票 0

写入重定向到慢速磁盘的 STDOUT 时进程变慢 [重复]

Process (Haproxy) 通过 subprocess.Popen 启动:- proc = subprocess.Popen( 命令, 标准输出=打开(输出文件,'w'), stderr=子进程.STDOUT, preexec_fn=os.setpgrp, 环境=自我。

回答 1 投票 0

为什么在没有 --interactive 的情况下运行 docker 容器时会失败

当我在 docker 容器中运行 expect 脚本时出现错误。 首先我创建了一个简单的期望脚本 test.expect #!/usr/bin/expect -f 设置超时 3 #expect_before 超时 { 放 &q...

回答 1 投票 0

你能解释一下这段代码的输出是 49 吗[关闭]

#include 主函数() { int 子 [50], 我; 对于(我=0;我<=48;i++); { sub[i]=i; printf("%d\n",sub[i]); } return 0; } I was first expecting th...

回答 4 投票 0

Cython:打开 io.BytesIO 对象作为文件

我有一个 Cython 函数,它对我想通过 python 输入的字节数据执行一些操作,其中 open() 作为 f: 块: 赛通函数: 从 libc.stdio 导入 fdopen def 访问(文件对象...

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.