首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

read 赋值有关问题

2012-03-16 
read 赋值问题read 赋值问题#include unistd.h#include sys/stat.h#include fcntl.h#include stdli

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
然后就会显示你当前目录下的文件夹了。

热点排行