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
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;
}