linux用C语言编程,打开etc/passwd文件,找出已经注册的普通用户账号
时间: 2024-05-11 14:18:09 浏览: 81
可以使用以下代码来实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 1024
int main() {
FILE *file = fopen("/etc/passwd", "r");
if (file == NULL) {
printf("Failed to open file\n");
return 1;
}
char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, file)) {
char *username = strtok(line, ":");
char *password = strtok(NULL, ":");
char *uid = strtok(NULL, ":");
char *gid = strtok(NULL, ":");
char *comment = strtok(NULL, ":");
char *home = strtok(NULL, ":");
char *shell = strtok(NULL, ":");
if (atoi(uid) >= 1000 && atoi(uid) < 65534) {
printf("%s\n", username);
}
}
fclose(file);
return 0;
}
```
该代码会打开 `/etc/passwd` 文件,并逐行读取。对于每行,它会使用 `strtok` 函数来将其拆分为多个字段。然后它会检查 UID 是否在正确的范围内(通常只有普通用户的 UID 在 1000 到 65533 之间),并打印出相应的用户名。
阅读全文