Chinaunix

标题: 关于read函数和sscanf函数的一点小疑问 [打印本页]

作者: unixerrrrr    时间: 2012-09-25 16:45
标题: 关于read函数和sscanf函数的一点小疑问
  1. #include"apue.h"
  2. int main(void)
  3. {
  4.         int n,int1,int2;
  5.         char line[MAXLINE];
  6.         while((n=read(STDIN_FILENO,line,MAXLINE))>0)
  7.         {
  8.                 line[n]=0;
  9.                 if(sscanf(line,"%d%d",&int1,&int2)==2)
  10.                 {
  11.                         printf("%d  %d  %d\n",n,line[0],line[1]);
  12.                         sprintf(line,"%d\n",int1+int2);
  13.                         n=strlen(line);
  14.                         printf("%d  %d  %d\n",n,line[0],line[1]);
  15.                         if(write(STDOUT_FILENO,line,n)!=n)
  16.                                 err_sys("write error");
  17.                 }
  18.                 else
  19.                 {
  20.                         if(write(STDOUT_FILENO,"invalid args\n",13)!=13)
  21.                                 err_sys("write errr");
  22.                 }
  23.         }
  24.         exit(0);
  25. }
复制代码
这是在apue中抄的一段代码,其中的printf是我自己加进去的,就是为了查看一下line数组,中对收到的数据是怎么存放的!
但是执行的结果却和我想的不一样,我以为line[0],line[1],line[2]会分别对应 n,int1,int2,但是不是,求明白人解答!
执行结果
  1. john_small@ubuntu:~/apue$ gcc -o add2 15-8.c
  2. john_small@ubuntu:~/apue$ ./add2
  3. 12 34
  4. 6  49  50
  5. 3  52  54
  6. 46
  7. 34 56
  8. 6  51  52
  9. 3  57  48
  10. 90
  11. 1 2
  12. 4  49  32
  13. 2  51  10
  14. 3
  15. 1 1
  16. 4  49  32
  17. 2  50  10
  18. 2
复制代码

作者: device_memory    时间: 2012-09-26 08:10
int 和char
作者: device_memory    时间: 2012-09-26 08:11
                           。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2