read在stdin中读出错,求解

发布于 2022-09-30 12:11:43 字数 102 浏览 16 评论 0

char sendline[100];
n=read(STDIN_FILENO,sendline,100);

当我输入很少的几个字母时,n总是等于100,为什么出错?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

合久必婚 2022-10-07 12:11:43

char *a和char a[]的a是不一样的。具体看c

榆西 2022-10-07 12:11:43

你在sendline 前面加上 &。 sendline只是一个常量指针。你要引用的是buf

或者你 char * p=sendline; 传进去 p

你在我安 2022-10-07 12:11:43

能不能麻烦楼上不懂别误导别人?sendline前加&?

孤独陪着我 2022-10-07 12:11:43

回复 4# lyd88best

请问你会吗?

你试试就知道了,请楼主试验一下吧。

琉璃繁缕 2022-10-07 12:11:43

回复 1# ctungsten
你的代码只做了这点操作么

流殇 2022-10-07 12:11:43

不可能啊,没道理啊???

陌生 2022-10-07 12:11:43

char sendline[100];
n=read(STDIN_FILENO,sendline,100);

当我输入很少的几个字母时,n总是等于100,为 ...
ctungsten 发表于 2011-04-07 16:08

    ubuntu 8.04下运行:
/* test.c */

  1. #include <stdio.h>
  2. #include <unistd.h>
  3. int main()
  4. {
  5.     int n;
  6.     char snedline[100];
  7.     n = read( STDIN_FILENO, sendline, 100 );
  8.     printf( "n = %d, sendline: %s\n", n, sendline );
  9.     return 0;
  10. }

复制代码cokeboL@cokeboL-desktop:~$ cc test.c
cokeboL@cokeboL-desktop:~$ a.out
abcdhgh
n = 8, sendline: abcdhgh

正常啊,刚看帖我迷茫了。。。
楼主你干其他什么坏事了?

不喜欢何必死缠烂打 2022-10-07 12:11:43

本帖最后由 cokeboL 于 2011-04-25 23:12 编辑

能不能麻烦楼上不懂别误导别人?sendline前加&?
lyd88best 发表于 2011-04-15 19:48

    仁兄,我陪你一起抑郁。。。

谁许谁一生繁华 2022-10-07 12:11:43

你在sendline 前面加上 &。 sendline只是一个常量指针。你要引用的是buf

或者你 char * p=sendline; 传 ...
crazyhadoop 发表于 2011-04-15 19:04

      调用函数分配个全新的函数空间压栈。虽然数组地址本身是char * const,但传递参数是拷贝副本的方式,就是sendline的一个副本,而且改变的不是sendline或它的副本,而是该指针指向的空间,所以没必要再做一次char *p = sendline再传吧。

    拙见,不知道对不对。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文