zeichen aus string extrahieren???



  • danke für deine antwort.
    aber ich möchte nicht den rest des textets behalten sondern das was ich wegschneide

    Dies ist ein Text.
    ies ist ein Text. = "D"
    ist ein Text. = "Dies "
    kann man dazu die fkt irgendwie umdrehen habs bisjetzt noch nicht geschaft
    Gruß BigBoss



  • void
    strcut (char *dst, char *src, int start, int len)
    {
      strncpy(dst,src+start,len);
      dst[start+len]='\0';
    }
    


  • vielen dank konfusius
    das klapt soweit aber der hängt hinten an den string noch ein paar zeichen an wo ich keine ahung habe wo die herkommen!?

    #include <stdio.h>
    void strcut (char *dst, char *src, int start, int len) 
    { 
      strncpy(dst,src+start,len); 
      dst[start+len]='\0'; 
    } 
    
    int main() 
    { 
        char *text = "Dies ist ein Text."; 
        char buffer[100]; 
    	strcut(buffer,text,5,3);
        puts(buffer);
        return 0; 
    }
    

    ist╠╠╠╠╠

    übergibt der automatisch noch irgendwelche zeiche?
    k hab ich wegbekommen
    lag an

    dst[start+len]='\0';
    

    muss ohne "start+" stehen sonst hat er zuviele Zeichen die er auffült

    und noch eine frage kann ich das dst aus der fkt in der form

    str = strcut(src, start, len);
    

    übergeben?
    oder geht das nur bei int werten?
    thx BigBoss



  • @Konfusius: bist du dir bei deinem code so sicher?
    ich korrigiere mal:

    void strcut (char *dst, char *src, int start, int len)
    {
      strncpy(dst, src+start, len);
      dst[len] = '\0';
    }
    


  • Also ich würde das strncpy() ja durch ein memmove() ersetzen.



  • gesagt, getan

    void strcut (char *dst, char *src, int start, int len)
    {
      memmove(dst, src+start, len);
      dst[len] = 0;
    }
    

    ob man fuer sowas aber noch ne extra funktion braucht... ein gut gesetztes kommentar tut das gleiche.



  • C/C++ Code:
    dst[start+len]='\0';

    muss ohne "start+" stehen sonst hat er zuviele Zeichen die er auffült

    aber hat einer von euch noch ne idee wie ich die fkr in die form

    str = strcut(src, start, len);
    

    bringen kann?
    bei int übergaben geht das
    aber bei strings bekomme ich immer fehler
    Gruß BB



  • strings sind keine ints. du kannst keine pointer auf strings zurueckgeben.
    okay, kannst du schon, aber das solltest du nicht machen, so lange du keine ahnung von strings und malloc()/free() hast.
    lebe einfach damit, dass du immer eine quelle und ein ziel angeben musst und beim ziel immer genug platz zum reinschreiben ist.



  • Es ginge mit

    char *strcut(char *src, int start, int len)
    {
      static char dst[1024];
      memmove(dst, src+start, len);
      dst[len] = 0;
      return dst;
    }
    

    Was aber nicht wirklich toll ist.



  • feigling schrieb:

    Was aber nicht wirklich toll ist.

    weil nach jeder benutzung der string ueberschrieben ist und dank der festen groesse leicht probleme bei laengeren strings zustande kommen.
    solche konstrukte verwendet man besser mit strcpy und einem check auf die groesse des strings. anderenfalls sind solche funktionen ein sicherheitsrisiko und/oder fuehren gerne mal zu abstuerzen.


Anmelden zum Antworten