Новичок
Профиль
Группа: Участник
Сообщений: 21
Регистрация: 4.11.2015
Репутация: нет Всего: нет
|
Задача: Получить информацию о дисковом системе компьютера,модель,емкость геометрия, и т.д разделы и файловые системы. Как переделать код под мою задачу? Код | int OpenFileR(char *FileName, FILE **File) { if ((*File = fopen(FileName, "r")) == NULL) return(0); else return(1); } int OpenFileW(char *FileName, FILE **File) { if ((*File = fopen(FileName, "w+")) == NULL) return(0); else return(1); } int CloseFile(FILE **File) { if (fclose(*File)) return(0); else return(1); } void Logo(void) { puts(""); puts(" ============================"); puts(""); puts(" XX XX YY YY NN NN "); puts(" XXXX YYYY NNNN NN "); puts(" XX YY NN NN NN "); puts(" XXXX YY NN NNNN "); puts(" XX XX YY NN NN "); puts(""); puts(""); puts(" "); puts(""); puts(" ============================"); puts(""); puts("============================================================================================="); puts(" Получить список пользователей, относящихся к группе с наибольшим числом пользователей "); puts("============================================================================================="); puts(""); } int GetGroups(char *String, FILE *Out) { int Count; for (Count = 0; Count < strlen(String)-1; Count++) { fputc(String[Count], Out); if (String[Count] == ':') if (String[Count+1] == '\n') return(0); } fprintf(Out, ","); return(0); } int GetGID(char *String) { char Num[1000]; int Count; for (Count = 0; Count < strlen(String)-1; Count++) { if (String[Count] == ':') { memcpy(Num, String, Count); Num[Count] = '\0'; return(atoi(Num)); } } return(-1); } void GetUsers(char *String, int IDG, FILE *Out) { int Count, IDU, Trig = 0; IDU = GetGID(String); if (IDU == IDG) { for (Count = 0; Count < strlen(String)-1; Count++) { if (Trig == 1) { fprintf(Out, "%c", String[Count]); } if (String[Count] == ':') Trig++; } fprintf(Out, ","); } } int CountUsers(char *String) { int Count, Num = 0; for (Count = 0; Count < strlen(String)-1; Count++) { if (String[Count] == ',') Num++; } return(Num); } void PrintUsers(char *String, int Max) { int Count, Num = 0, Trig = 0; for (Count = 0; Count < strlen(String)-1; Count++) { if (String[Count] == ',') Num++; } if (Num == Max) { fprintf(stdout, "Группа: "); for (Count = 0; Count < strlen(String)-2; Count++) { if (String[Count] == ':') { Trig++; continue; } if (Trig == 1) fprintf(stdout, "%c", String[Count]); if (Trig == 2) { fprintf(stdout, " Пользователи: "); Trig++; } if (Trig == 3) fprintf(stdout, "%c", String[Count]); } fprintf(stdout, "\n"); } }
|
Код | #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include "Main9Func.h" #define true 1 int main(void) { char StrGrp[1000], StrUsr[1000], StrOut[1000]; int IDG = 0, Max = 0, Num = 0; FILE *Usr, *Grp, *Out; //////////////////////////////////////////////////////////////////////////////////// Logo(); system("cat /etc/passwd | awk -F ":" \'{print $4":"$1}\' > users"); system("cat /etc/group | awk -F ":" \' { print $3":"$1":"$4}\' > groups"); OpenFileR("users", &Usr); OpenFileR("groups", &Grp); OpenFileW("out", &Out); while (true) { fgets(StrGrp, 800, Grp); if (feof(Grp)) break; GetGroups(StrGrp, Out); IDG = GetGID(StrGrp); while (true) { fgets(StrUsr, 800, Usr); if (feof(Usr)) break; GetUsers(StrUsr, IDG, Out); } fprintf(Out, "\n"); rewind(Usr); } rewind(Out); while (true) { fgets(StrOut, 800, Out); if (feof(Out)) break; Num = CountUsers(StrOut); if (Num > Max) Max = Num; } rewind(Out); while (true) { fgets(StrOut, 800, Out); if (feof(Out)) break; PrintUsers(StrOut, Max); } fprintf(stdout, "\n\n"); CloseFile(&Usr); CloseFile(&Grp); CloseFile(&Out); return(0); }
|
|