04. april 2003 - 10:54
Der er
4 kommentarer og 1 løsning
Hmm
jeg har en fil, jeg har åbnet, og smidt indholdet ud, således: (Grin nu ikk) #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fptr; char linie[81]; if((fptr = fopen("group", "r")) == NULL) { printf("\nFilen Group kan ikke åbnes."); exit(1); } while(fgets(linie, 81, fptr) != NULL) { printf("%s", linie); } fclose(fptr); return 0; } Jeg skal nu havde lavet sådan at nå listen står således: root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:dalbjerg skal den liste alle gruppenavnene, altså : root, daemon, bin, sys, adm på næsten linie skal der her står x, x, x, x, x på næste linie 0, 1, 2, 3, 4 og på næste linie skal der står dalbjerg
Annonceindlæg fra DE-CIX
04. april 2003 - 11:23
#3
Noget i retning af følgende måske: #include <stdio.h> #include <stdlib.h> char tmp[17]; char* part(int skip, char *s) { int ix1,ix2,nfnd; nfnd = 0; ix1 = 0; while(nfnd < skip) { if(s[ix1]==':') nfnd++; ix1++; } ix2 = 0; while((s[ix1] != ':') && (s[ix1] != '\0') && (s[ix1] != '\n')) { tmp[ix2] = s[ix1]; ix1++; ix2++; } tmp[ix2] = '\0'; return tmp; } #define N 25 int main(void) { FILE *fp; char linie[81]; char p1[N][17],p2[N][17],p3[N][17],p4[N][17]; int n,i; fp = fopen("test.dat", "r"); n = 0; while(fgets(linie, sizeof(linie), fp) != NULL) { printf("%s", linie); strcpy(p1[n],part(0,linie)); strcpy(p2[n],part(1,linie)); strcpy(p3[n],part(2,linie)); strcpy(p4[n],part(3,linie)); n++; } for(i = 0; i < n; i++) printf(" %s", p1[i]); printf("\n"); for(i = 0; i < n; i++) printf(" %s", p2[i]); printf("\n"); for(i = 0; i < n; i++) printf(" %s", p3[i]); printf("\n"); for(i = 0; i < n; i++) printf(" %s", p4[i]); printf("\n"); fclose(fp); return 0; }