使用stat()函数和main函数参数我必须编写一个程序,从st_size读取并打印自己的大小。 我已经尝试过了:
#include <sys/types.h>
#include <sys/stat.h>
int main( const char * szFileName )
{
struct stat fileStat;
int err = stat( szFileName, &fileStat );
if (0 != err) return 0;
return fileStat.st_size;
}
但我真的不明白如何编辑它来阅读它自己的大小。
感谢您的时间和所有帮助:)
答案 0 :(得分:1)
由于您的程序存在一些小错误,我已经花了很少的精力编写一个简单的工作版本:
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#define BUF 20
int main(int argc, char **argv)
{
struct stat fileStat;
char buf[BUF];
int err;
err = stat( argv[1], &fileStat ); // No argv sanity checks
if (0 != err)
return EXIT_FAILURE;
memset(buf, 0, BUF);
snprintf(buf, BUF, "%d\n", fileStat.st_size);
write(0, buf, BUF);
}
进一步评论:
main(int argc, char** argv)
是获取参数的方法。 argv[1]
包含第一个参数,如果提供argv[0]
是程序名称。见here。return 0
表示在UNIX / Linux中取得成功。通过使用write
,您还可以管道化结果以进行进一步处理。要读取程序自己的大小(请求OP),只需编译(gcc -o prog stat.c
)并运行(./prog prog
)。