Avatar billede dalbjerg Nybegynder
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
Avatar billede soreno Praktikant
04. april 2003 - 11:11 #1
Skal det være c - eller må der benyttes c++ (jeg tænker på stl) ?
Avatar billede dalbjerg Nybegynder
04. april 2003 - 11:13 #2
Helst bare c... Men kan det ikke lade sig gøre så C++
Avatar billede arne_v Ekspert
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;
}
Avatar billede arne_v Ekspert
04. april 2003 - 11:24 #4
Koden kan nok forbedres lidt men det må ihvertfald give nogle ideer.
Avatar billede dalbjerg Nybegynder
04. april 2003 - 11:28 #5
thx
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester