题:
* 已知 int lstat(const char *file, struct stat *buf); 则请判断下面正误
*
* A)
* struct stat *statbuf;
* lstat("a.txt", statbuf);
*
* B)
* struct stat statbuf;
* lstat("a.txt", &statbuf);
*
* 答案请选择空白区域(做为学习用,贻笑大方了)
*
* 答案:
* 1)错误
* 由lstat原型知道第二个参数是要一个 struct stat 结构变量的指针(即变量内存地址)
* 上面只是由 struct stat *statbuf; 定义了一个指针,此时指针所指内容未知,所以不能直接 lstat("a.txt", statbuf); 这样等于把lstat函数的结果放入未知内存,所以引起错误, 只有给它一个已经定义好的结构变量才可用
*
* 可以如下修正
* struct stat *statbuf;
* struct stat buf;
* statbuf = &buf;
*
* lstat("a.txt", statbuf);
*
* 2)正确
* 因为上面定义了变量,而直接传递结构变量地址 &statbuf, 所以正好正确
*/
示例:
1)
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{
struct stat *statbuf;
struct stat buf;
statbuf = &buf;
int i=1;
while(lstat(argv[i++], statbuf)==0)
{
printf("%s: %d\n", argv[i-1], statbuf->st_size);
}
return 0;
}
2)
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{
struct stat statbuf;
int i=1;
while(lstat(argv[i++], &statbuf)==0)
{
printf("%s: %d\n", argv[i-1], statbuf.st_size);
}
return 0;
}
.结果
[root@localhost file]# ./lstat lstat.c lstat
lstat.c: 1236
lstat: 4966
正文
指针一小题2007-03-24 16:02:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/wfxsky/24236.html
阅读(3402) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论