read在stdin中读出错,求解
char sendline[100];
n=read(STDIN_FILENO,sendline,100);
当我输入很少的几个字母时,n总是等于100,为什么出错?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
char sendline[100];
n=read(STDIN_FILENO,sendline,100);
当我输入很少的几个字母时,n总是等于100,为什么出错?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
char *a和char a[]的a是不一样的。具体看c
你在sendline 前面加上 &。 sendline只是一个常量指针。你要引用的是buf
或者你 char * p=sendline; 传进去 p
能不能麻烦楼上不懂别误导别人?sendline前加&?
回复 4# lyd88best
请问你会吗?
你试试就知道了,请楼主试验一下吧。
回复 1# ctungsten
你的代码只做了这点操作么
不可能啊,没道理啊???
ubuntu 8.04下运行:
/* test.c */
复制代码cokeboL@cokeboL-desktop:~$ cc test.c
cokeboL@cokeboL-desktop:~$ a.out
abcdhgh
n = 8, sendline: abcdhgh
正常啊,刚看帖我迷茫了。。。
楼主你干其他什么坏事了?
本帖最后由 cokeboL 于 2011-04-25 23:12 编辑
仁兄,我陪你一起抑郁。。。
调用函数分配个全新的函数空间压栈。虽然数组地址本身是char * const,但传递参数是拷贝副本的方式,就是sendline的一个副本,而且改变的不是sendline或它的副本,而是该指针指向的空间,所以没必要再做一次char *p = sendline再传吧。
拙见,不知道对不对。