C语言编程,打开、/etc/passwd文件,找到已经注册的普通用户账号
时间: 2023-06-13 16:08:02 浏览: 122
在C语言中,可以使用标准库函数fopen()和fgets()打开并读取/etc/passwd文件,然后遍历文件中每一行,查找普通用户账号。
以下是一个简单的C语言程序,可以实现此功能:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 1024
int main() {
char line[MAX_LINE_LENGTH];
char* username;
char* uid;
char* gid;
FILE* fp = fopen("/etc/passwd", "r");
if (fp == NULL) {
perror("Failed to open /etc/passwd");
exit(1);
}
while (fgets(line, MAX_LINE_LENGTH, fp)) {
// Get username, uid, gid from the line
username = strtok(line, ":");
uid = strtok(NULL, ":");
strtok(NULL, ":"); // skip password field
gid = strtok(NULL, ":");
// Check if the user is a regular user (not a system user)
if (atoi(uid) >= 1000 && atoi(uid) < 65534) {
printf("Username: %s\n", username);
}
}
fclose(fp);
return 0;
}
该程序会逐行读取/etc/passwd文件,然后通过strtok()函数将每行分割成不同字段。这里只需要获取第一个字段(用户名)和第二个字段(UID),然后判断UID是否属于普通用户范围(1000到65534之间)即可。如果符合条件,则输出该用户名。
相关推荐















