Avatar billede dalbjerg Nybegynder
13. maj 2003 - 16:21 Der er 14 kommentarer og
1 løsning

Slet alt indholdet i en struct

Hej

Hmm, jeg har en struct som jeg laver sådan:
struct bruger_info
{
char STbruger[40];
char STkortnummer[40];
char STkode[40];
char STlog[40];
struct bruger_info *naeste;
};
struct bruger_info *foerste, *sidste, *ny;


Her smider jeg en masse indhold ind i. Men nu skal jeg så havde slettet alt indholdet i den.

Altså havde clearet alle linier.
Hvordan gør man dette ??

Det skal være i ren c.

/dalbjerg
Avatar billede borrisholt Novice
13. maj 2003 - 16:22 #1
brug ZeroMemory

Eller Fillchar
Avatar billede dalbjerg Nybegynder
13. maj 2003 - 16:24 #2
hmm kunne jeg for dig til at lave en stump kode ?
Avatar billede dalbjerg Nybegynder
13. maj 2003 - 16:41 #3
har siddet og lavet noget ala dette, men det virker ikke efter hensigten.

int sletstruct()
{
  struct bruger_info *prev,*curr;
  if(foerste==NULL) return 0;
  prev=NULL;
  curr=foerste;   
  while(curr!=NULL) {
      free(curr);
      curr=curr->naeste;
      printf("%s", curr->STbruger);
    }
    return 0;
}

slette kun noget af det...
Avatar billede gumbert Nybegynder
13. maj 2003 - 17:01 #4
Nederst på siden er hvordan man gør i c (D øverste er c++)
http://www.cplusplus.com/doc/tutorial/tut3-4.html
Avatar billede dalbjerg Nybegynder
13. maj 2003 - 17:02 #5
hmm, fatter bare hat af det her c... :( Kan du skærer det lidt mere ud i pap ?
Avatar billede arne_v Ekspert
13. maj 2003 - 17:05 #6
Du sletter en enkelt struct nemmest med:

memset(var,'\0',sizeof(varname));

(memset er ANSI C og derfor i alle C compilere).

Men du vil jo nok i virkeligheden deallokere hele listen.

Det du gør er farligt:

      free(curr);
      curr=curr->naeste;

du bruger memeory efter at have frigivet det.

Så du skal nok bruge:

int sletstruct()
{
  struct bruger_info *next,*curr;
  if(foerste==NULL) return 0;
  curr=foerste;   
  while(curr!=NULL) {
      printf("%s slettes", curr->STbruger);
      next=curr->next;
      free(curr);
      curr=next;
    }
    return 0;
}
Avatar billede dalbjerg Nybegynder
13. maj 2003 - 17:09 #7
siger undefine symboel next....
Avatar billede gumbert Nybegynder
13. maj 2003 - 17:10 #8
Bruger normalt c++ så er ikke helt sikker men prøv at skrive detteher ind i din kode

#include <stdlib.h>

struct bruger_info
{
char *STbruger[40];
char STkortnummer[40];
char STkode[40];
char STlog[40];
struct bruger_info *naeste;
};
struct bruger_info *foerste, *sidste, *ny;


void free (void *STbruger);

Det er lidt gætværk men prøv at se om det virker
Avatar billede arne_v Ekspert
13. maj 2003 - 17:13 #9
Dalbjerg så tror jeg ikke at du har lavet eksempel helt som
jeg skrev.

int sletstruct()
{
  struct bruger_info *next,*curr; /* <--------------- */
  if(foerste==NULL) return 0;
  curr=foerste;   
  while(curr!=NULL) {
      printf("%s slettes", curr->STbruger);
      next=curr->next;
      free(curr);
      curr=next;
    }
    return 0;
}
Avatar billede dalbjerg Nybegynder
13. maj 2003 - 17:14 #10
arne_v koperet dit.. hmm prøver lige igen...
Avatar billede dalbjerg Nybegynder
13. maj 2003 - 17:17 #11
jep melder stadigt fejl i denne linie
next=curr->next;

med undefined symbol next
Avatar billede arne_v Ekspert
13. maj 2003 - 17:19 #12
Ah.

Det er min fejl.

Engelsk versus dansk.

next=curr->naeste;

:-)
Avatar billede olennert Nybegynder
13. maj 2003 - 20:57 #13
Arne, Arne, Arne. Hvad bliver det næste? Kommer du til at skrive tegn i stedet for karakter? Og oversætter i stedet for compiler? Symbolsk maskinsprogsoversætter i stedet for assembler? Krydsoversætte i stedet for cross compile?

:-)

Personligt foretrækker jeg som hovedregel de danske ord, dog sætter jeg grænsen ved pladelager, skriver og grænseflade, hvor jeg bruger harddisk, printer og interface.

:-)

I øvrigt mener jeg at karakter er noget man har en skidt en af, eller noget man fik i skolen.
Avatar billede arne_v Ekspert
13. maj 2003 - 21:17 #14
Jeg bruger altid engelske navne, engelske kommentarer etc..

Også før jeg blev ansat i et amerikansk firma.
Avatar billede olennert Nybegynder
14. maj 2003 - 09:59 #15
Håber at :-) gjorde det klart at det ikke var et angreb på dig. Hvis bare folk er konsekvente, og enten skriver 100% på dansk eller 100% på engelsk, så er jeg glad. Men jeg kan ikke lide når folk taler om at "Jeg skal lige kompilere sourcen. Så, nu virker det. Hov, der kommer en fejl når jeg bruger karakteren 'a' som input".

Ja, jeg ved godt jeg er underlig. Min kone fortæller mig det dagligt. :-)
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