首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C程序设计中的打印输出st_uid

C程序设计中的打印输出st_uid
EN

Stack Overflow用户
提问于 2016-03-27 12:34:17
回答 1查看 4.7K关注 0票数 1

因此,我正在制作一个非常简单的程序,输出UNIX系统上文件的属性。

为了做到这一点,我一直在使用stat()。

但是,我在打印文件的用户和组时遇到了一些问题。其他一切似乎都正常。

这是我的代码的一个小片段(已经声明了struct):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
stat(dir_pointer->d_name, &buf);
printf("%o %s\n", buf.st_nlink, buf.st_uid);

每当我运行这个特定的代码部分时,它都会给我一个分段错误。用户和组会被表示为字符串吗?

编辑1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct stat buf; // struct for stat
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-27 13:08:47

st_uid成员的struct stat是一个uid_t类型的整数,它通常与unsigned shortunsigned int相同。它包含数值uid,而不是用户名。

如果要打印数字uid,首先需要将其转换为定义良好的整数类型,并在printf中使用正确的格式描述符:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf("%ld\n", (long)buf.st_uid);

另一方面,如果要打印关联的用户名,则需要使用函数getpwuid来执行转换:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct passwd *pwd;
pwd = getpwuid(buf.st_uid);
if(pwd == NULL) {
    perror("getpwuid");
} else {
    printf("%s\n", pwd->pw_name);
}

请注意,getpwuid返回一个指向静态缓冲区的指针,因此如果您想在以后重用它,则需要保存其值的副本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36252328

复制
相关文章
python中打印输出date信息
hostname = commands.getoutput('hostname')
py3study
2020/01/08
1.4K0
Android系统mk文件中打印输出
Android.mk文件打印方式 警告方式: $(warning $(parameter)) 错误方式: $(error $(parameter)) 信息方式: $(info $(parameter)) 注意:其中parameter表示变量. 不过一般使用warning在编译过程中输出log. 实际应用 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libgl2jni LOCAL_CFLAGS := -
李小白是一只喵
2020/04/23
2K0
Android系统mk文件中打印输出
C++程序设计?
。当然,大家也不要担心,本公众号还是以讲按键精灵应用为主,然后会穿插一些python的学习总结和小成果,c++真的不在更新范围内,大家不要担心看不懂。毕竟python对新手更友好、功能更强大,最最简单易上手、有助于办公效率的其实还是按键精灵啦。
Ed_Frey
2019/07/02
5540
C程序设计的异常处理
大家新年好,感谢大家对本公众号一如既往地支持,后面争取创作出更加优质的文章。今天是2021年的第一篇文章,分享一下在C程序设计当中对异常的处理。主要是介绍一下goto和longjmp函数的使用。
飞哥
2021/01/18
7270
c语言程序设计总结心得-C语言程序设计小结
  真正的程序设计高手不是语法上的精通而是程序总体架构,算法上的周密。当初大学时都是利用C51写的51单片机的程序,根本就不管程序的可维护性,程序大小c语言程序设计总结心得,就是一个C文件中包含了全部的函数体。在工作中这是一个完全不能接受的习惯和致命错误。
宜轩
2022/12/29
3.7K0
c语言程序设计实例-经典C语言程序设计100例
  题目:给一个不多于5位的正整数c语言程序设计实例,要求:一、求它是几位数,二、逆序打印出各位数字。
宜轩
2022/12/29
3.5K0
给点颜色打印输出
❝调试打印有点颜色输出,让编程更美好! ❞   不多说直接上代码: #include <QDebug> #define NONE "\033[0m" #define DARK "\033[30m" #define RED "\033[31m" #define GREEN "\033[32m" #define YELLOW "\033[33m" #define BLUE "\033[34m" #define PURP
Qt君
2020/05/26
9710
大话C#程序设计
C#和Java都是完全面向对象的编程语言。面向对象语言中,完全可以把现实世界的任何事物看成一个对象,理解了对象这个概念,学习面向对象的知识就可以说轻车熟路了。
程序猿小亮
2021/01/28
5200
7.C++程序设计——面向对象程序设计方法
1989年 C++2.0 1994年 ANSI C++ 1998年 C++98 加入STL(Standard Template Library)-泛型设计
小飞侠xp
2021/03/15
5910
重载QDebug打印输出
❝简单的QDebug重载例子,以支持自定义类型(枚举)打印输出。 ❞ namespace { enum Day { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; } QDebug operator<<(QDebug debug, const Day &day) { switch (day
Qt君
2020/05/12
1.4K0
3.C++程序设计——引用
引用 引用的概念 下面的写法定义了一个引用,并将其初始化为引用某个变量 类型名 & 引用名 = 某变量名 int n = 4; int & r = n; //r引用了n,r的类型是int & 某个变量的引用,等价于这个变量,相当于该变量的一个别名 定义引用时一定要将其初始化成引用某个变量 初始化后,他就一直引用该变量,不会再引用别的变量了 引用只能引用变量,不能引用常量和表达式 引用的应用 C语言中,如何编写交换两个整形变量值的函数? void swap(int a, int b) { int tmp;
小飞侠xp
2021/03/04
3210
我的c++程序设计作业-atm
程序说明: 本作业atm部分我用了大概两天时间来完成。 一开始的工作是尝试着在原框架代码上加注释,以此来了解老师给出的基本思路。 同时着手对框架中不符合c++标准的,没有能很好地利用c++的特性的地方进行修改 本项目使用面向对象的编程方法,抽象出atm类和account账户类,做到基本实现作业要求 亮点之处: 1.充分利用c++的string类代替c语言风格的字符数组,简化了许多操作 2.统一管理用户界面,实现表现逻辑与业务逻辑的分离和代码重用 3.结合控制台清屏、延时、密码星号回显输入等技术,优
horsley
2022/08/16
1K0
2020_883《C程序设计》
答:在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符,C语言规定标识符只能由字母、数字、下划线3种字符组成,且第1个字符必须为字母或下划线。
石璞东
2021/12/02
6690
2020_883《C程序设计》
C语言程序设计_现代方法
时至今日, C语言仍然是计算机领域的通用语言之一,但今天的 C语言已经和最初的时候大不相同了。本书最主要的一个目的就是通过一种“现代方法”来介绍 C语言,书中强调标准 C,强调软件工程,不再强调“手工优化”。这一版中紧密结合了 C99标准,并与 C89标准进行对照,补充了 C99中的最新特性。本书分为 C语言的基础特性、 C语言的高级特性、 C语言标准库和参考资料 4个部分。每章末尾都有一个“问与答”小节给出一系列与该章内容相关的问题及答案,此外还包含适量的习题。
用户3157710
2018/10/10
1.4K0
C语言程序设计_现代方法
《挑战30天C++入门极限》理解C++面向对象程序设计中的抽象理论
  为了更容易学习便于理解,我们的图例是以有两个小孩围成一圈,并且设置报数的数为1的情况来制作的。   上面的两种解决Josephus问题的解决办法从代码上来看,都属于一杆子到底的解法,第二种从结构表达上优于第一种,但是这两个都属于纯粹的过程式程序设计,程序虽然简短,但很难让人看懂,程序的可读性不高,在我们没有学习面向对象的编程之前,聪明的人可能会把各各步骤分解出来做成由几个函数来解决问题。   思路大致可以分为以下六个部分:   1.建立结构   2.初始化小孩总数,和数小孩的数   3.初始化链表并构成环链   4.开始通过循环数小孩获得得胜者   5.输出得胜者   6.返回堆内存空间   从表上看这个程序为了便于阅读可以写成六个函数来分别处理这六个过程,的确,这么修改过后程序的可读性是提高了一大步,但是有缺点仍然存在,程序完全暴露在外,任何人都可以修改程序,程序中的一些程序作者不希望使用者能够修改的对象暴露在外,各对象得不到任何的保护,不能保证程序在运行中不被意外修改,对于使用者来说还是需要具备解决Josephus问题算法的能力,一旦程序变的越来越很,,每一个参与开发的程序员都需要通读程序的所有部分,程序完全不具备黑盒效应,给多人的协作开发带来了很大的麻烦,几乎每个人都做了同样的重复劳动,这种为了解决一个分枝小问题写一个函数,最后由很多个解决局部问题的函数组合成的程序我们叫做结构化程序设计,结构化编程较过程化编程相比可读性是提高了,但程序不能轻易的被分割解决一个个大问题的模块,在主函数中使用他们的时候总是这个函数调用到那个函数,如果你并不是这些函数的作者就很难正确方便的使用这些函数,而且程序的变量重名问题带来的困扰也是很让人头痛的…… 那么面向对象的程序设计又是如何解决这些问题的呢?   面向对象的程序设计的思路是这样的:   程序 = 对象 + 对象 +对象..........   这么组合而来的   对于上面的josephus问题可以把问题分割成如下的方法进行设计(如下图所示)
landv
2019/07/15
3940
js中的面向对象程序设计
面向对象的语言有一个标志,那就是他们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。
牛老师讲GIS
2018/10/23
6090
设置打印输出不缓冲
❝通过设置setvbuf函数达到打印输出不缓冲的功能,以消除输出延时。❞ 原型 int setvbuf(FILE *stream, char *buffer, int mode, size_t size); 「stream」:将缓冲区设置为文件流。 「buffer」:指向流使用的缓冲区的指针,或指向仅更改大小和模式的空指针。 「mode」:缓冲模式使用。它有以下值之一: _IOFBF 全缓冲 _IOLBF 行缓冲 _IONBF 没有缓冲 「size」:缓冲区大小。 返回为0即成功,否则失败。 使用   
Qt君
2020/04/17
2.2K0
C++面向对象程序设计
结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了
浪漫主义狗
2023/09/04
4120
C# 语言程序设计笔记
C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。他是从C和C++派生而来的,其与C/C++语法非常相似,并依附于.NET虚拟机的强大类库支持,各方面对强于C/C++.
微软技术分享
2022/12/28
3.9K0
点击加载更多

相似问题

打印输出C中的问题

31

C程序设计中的数组

25

C程序设计中的链表

11

C程序设计中的递归

11

C程序设计中的opendir()

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文