C语言编程打开/etc/passwd文件,显示已经注册的普通用户账号
时间: 2023-12-04 09:06:09 浏览: 46
在Linux系统中,/etc/passwd文件记录了系统中所有用户的账号信息,包括用户名、UID、GID、用户主目录、默认shell等信息。要读取该文件并显示其中已经注册的普通用户账号,可以使用以下C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE* fp;
char buf[1024];
fp = fopen("/etc/passwd", "r");
if(fp == NULL) {
printf("Failed to open /etc/passwd\n");
exit(1);
}
while(fgets(buf, 1024, fp) != NULL) {
// 按照冒号分割账号信息
char* p = strtok(buf, ":");
int count = 0;
while(p) {
if(count == 0) {
// 第一个字段是用户名
if(strcmp(p, "root") != 0 && strcmp(p, "nobody") != 0) {
// 排除系统用户root和nobody
printf("%s\n", p);
}
break;
}
p = strtok(NULL, ":");
count++;
}
}
fclose(fp);
return 0;
}
```
该程序会依次读取/etc/passwd文件中的每一行,然后对每一行的账号信息进行解析。如果第一个字段是一个普通用户的用户名,就打印出来。需要注意的是,我们排除了系统用户root和nobody,因为这些用户不是普通用户。