read 赋值问题
read 赋值问题
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
char buffer[4];
int a;
a = read(0, buffer, 4);
if (a = -1)
write(2, "abc\n", 3);
exit (0);
}
如果输入4位以上的话 他是会返回-1吗?
如果返回-1的话
他是不是因该返回我输入的字符串前3位啊??
为啥输入超过4位以上。。。这个例子报错啊。。。
新手 请教
[解决办法]
这个程序写的有问题,首先是if(a = -1)
这样的话a永远是-1,而不是read返回的是-1。
应该是if (a == -1),一个等号是赋值,两个等号才是比较,楼主粗心了。
如果是4位或4位以上的话,它返回的是4,4位以下是几就返回几,出错返回-1。
如果是返回-1的话,那么就执行write(2, "abc\n", 3)这条语句,即在屏幕输出abc。还有一个\n所以应该是write(2, "abc\n", 4);
输入超过4位以上因为read只读4个字符,多出来的部分还在输入缓冲区,当程序结束会更新缓冲区,多余部分会打印在shell命令行上,这就是你说出错的原因。
你可以输入1234ls
然后就会显示你当前目录下的文件夹了。