gpt4 book ai didi

c - 用 popen() 打开的文件没有 EOF?

转载 作者:行者123 更新时间:2023-11-30 20:50:51 27 4
gpt4 key购买 nike

我想将目录的内容写入缓冲区,但我总是得到“dir to large for buffer”...我不知道为什么目录最大长度为 3000 个字符

它也不能使用 '\n' 而不是 EOF

#include <stdio.h>

int main(int argc,char** argv){
FILE* fp;
fp=popen("ls /etc","r");
char c;
int i=0;
char buffer[20000];
while((c=fgetc(fp))!=EOF){
buffer[i]=c;
i++;
if(i=20000){
printf("dir to large for buffer");
break;
}
}
buffer[i]='\0';
}

最佳答案

Per the documentationfgetc() 返回 int,而不是 char

字符c;

是错误的。应该是

int c;

并且,如上所述:

如果 (i=20000) ...

将始终评估为 true。应该是

if (i==(20000 - 1)) ...

假设您显然正在尝试创建一个以 '\0' 结尾的 C 字符串。

关于c - 用 popen() 打开的文件没有 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38122228/

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