我想将目录的内容写入缓冲区,但我总是得到 “dir to large for buffer”......我不知道为什么目录是max 3000 chars long
它也可以使用'\ 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';
}
答案 0 :(得分:3)
Per the documentation,fgetc()
返回int
,而不是char
。
char c;
错了。它应该是
int c;
并且,如上所述:
if (i=20000) ...
将始终评估为true。它应该是
if (i==(20000 - 1)) ...
鉴于您显然正在尝试创建一个'\0'
终止的C字符串。