我正在学习c编程。 我正在尝试使自己的程序类似于ls命令,但select较less。我所做的是将input目录/文件名作为参数,然后使用dirent结构(如果是目录)获取所有目录条目。
在它之后我使用stat()来获取文件的所有信息,但这里是我的问题,当我使用write()来打印这些值的罚款,但是当我想打印这些与printf()我得到warninng:format'%ld 'expect type'long int',但是参数2的types是'__uid_t'。 我不知道在%ld的地方应该使用什么,也不知道其他特殊的数据types。
__uid_t
没有格式说明__uid_t
,因为这个类型是系统特定的,不是C标准的一部分,因此printf
不知道它。
通常的解决方法是将其升级为适合所有目标系统上整个UID值范围的类型:
printf("%lu\n", (unsigned long int)uid); /* some systems support 32-bit UIDs */
你可以把它转换成长整型:
printf("foobar: %ld\n", (long int)your_uid_t_variable);