Avatar billede mik28 Seniormester
23. maj 2002 - 15:34 Der er 3 kommentarer og
2 løsninger

strip

Hvad er der galt her :-( Det er i denne linie det går galt
nytekst[y] = tekst[x];




char* strip(char tekst[])
{
    int i,y=0;
    char *nytekst="";
    i = strlen(tekst);
   
    printf("\nTekst : %s",tekst);
    printf("\nLength : %d",i);

    for (int x = 0; x<=i-1; x++)
    {
        printf("\n tekst[i] = %c", tekst[x]);
        if (tekst[x] != ' ')
        {
            nytekst[y] = tekst[x];
          y++;
        }
    }
    printf("\nSlut strip");
    return(nytekst);
};
Avatar billede laffe Nybegynder
23. maj 2002 - 15:55 #1
Prøv det her:

char* strip(char tekst[])
{
  int i = 0;
  while ( (tekst[i] != ' ') && (tekst[i]))
    i++;

  if (tekst[i]== ' ')
    tekst[i] = 0;

    return(tekst);
};
Avatar billede chries Nybegynder
23. maj 2002 - 15:56 #2
nytekst = pointer til 1 byte:
char *nytekst="";

her skriver du mere end en byte:
nytekst[y] = tekst[x];

løsning 1 kunne være:
..
i = strlen(tekst);
char *nytekst = new char[i+1];
..

derved skal du huske at slette det funtionen returner:

char *pNyText = strip(....)
..
leg med pNyText
..
delete pNytext;

løsning 2 kunne være:
char nytekst[2048]="";

derved er du sikker optil 2048 tegn, men du returner en pointer til en lokal variablet, hvilket er meget farlig hvis man ikke er 100% sikker på sin sag.

løsning 3:

void strip(char tekst[], nytekst[] )
...


klad:

char txt[128] = "fefwefwefwecwe few ce wc we";
char nytxt[128];

strip( txt, nytxt );
Avatar billede chries Nybegynder
23. maj 2002 - 15:57 #3
klad: = kald:
Avatar billede mik28 Seniormester
23. maj 2002 - 16:08 #4
Det jeg er interesseret i er en funktion som jeg kalder med en streng, og som så returnere en pointer til streng uden mellemrum.

Jeg vil helst ikke skulle give en længde på den "streng" jeg returnere, da den skal kunne kaldes med med forskellige længder.
Avatar billede laffe Nybegynder
23. maj 2002 - 18:29 #5
Den funktion jeg lavede "strippede" den streng der var givet med som parameter.

Så Hvis:

tekst[] = "hej    ";    // udgangspunkt

strip(tekst);          // kald strip

tekst[] = "hej";        // tekst efter kald til 'strip'.
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