C 用popen()打开的文件没有EOF?
我想将目录的内容写入缓冲区,但我总是得到 “dir to large for buffer”…我不知道为什么目录最大长度为3000个字符 它也不使用“\n”而不是EOFC 用popen()打开的文件没有EOF?,c,C,我想将目录的内容写入缓冲区,但我总是得到 “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
#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';
}
#包括
int main(int argc,字符**argv){
文件*fp;
fp=波本(“ls/etc”、“r”);
字符c;
int i=0;
字符缓冲区[20000];
而((c=fgetc(fp))!=EOF){
缓冲区[i]=c;
i++;
如果(i=20000){
printf(“dir to large for buffer”);
打破
}
}
缓冲区[i]='\0';
}
,fgetc()
返回int
,而不是char
charc代码>
这是错误的。应该是
intc代码>
如前所述:
if(i=20000).
将始终评估为真。应该是
if(i==(20000-1))…
假设您显然试图创建一个以'\0'
结尾的C字符串。i=20000
-->i==20000-1
。也charc代码>-->intc代码>不相关,但您确实应该缩进代码。顺便说一句,缩进不是为了取悦你的老师,而是为了你(也为了我们),这样你/我们可以阅读你的程序,而且,i=20000
应该是i==20000
。没错,但不是唯一的问题。