Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de ::  C (C89, C99 und C11) ::  Element eines Arrays löschen
Antwort schreiben
Benutzername:
Titel:
Nachrichtentext:
  :)  :D  ;)  :(  :p  :mad:  :rolleyes:  :eek:  :confused:  :cool:  :o)  :leak:  :live:  :die:  :idea:  :arrow:  :warning: 
                             
                         
         
           
                             
                             
                             
             


BBCode in diesem Beitrag deaktivieren [BBCode]
Smilies in diesem Beitrag deaktivieren
Element eines Arrays löschen and 303944
     


Themen-Überblick 
(Aktualisieren)
Autor Nachricht
Minispiri
23:05:37 25.05.2012   Titel:   Zitieren

DirkB schrieb:
@Minispiri
Das i braucht man nicht wirklich, dafür kann man gleich pos nehmen.
Dann sollte man in alter C-Manier den Zeiger auf das Array auch wieder zurück geben.
C++:
char *strcclr(char *str, size_t pos);

Warum? Dann kann man sowas machen:
C++:
  char t[] = "Hallo Welt!";
 
  puts(strcclr(t, 5));


Eine Überprüfung, ob pos noch innerhalb des Strings ist (also vor dem '\0' liegt) kann man auch noch machen.
Dies ist in C aber nicht üblich. Dafür hat der Aufrufer zu sorgen.


Jop, hast vollkommen Recht, ich hab das Lösungsbeispiel auch dementsprechend umgeändert.
Danke für die Info.
1234567890
21:55:55 25.05.2012   Titel:   Zitieren

danke, hab das jetzt hinbekommen.

lg
DirkB
21:43:18 25.05.2012   Titel:   Zitieren

1234567890 schrieb:
vielen dank, aber ich werde meine eigenen code schreiben (der ist dann halt ich so kompakt, kann aber das selbe).

Was willst du daran denn noch komplizierter machen?
Alles was du da sonst noch an Variablen und Berechnungen hast, ist überflüssig.
1234567890
21:35:12 25.05.2012   Titel:   Zitieren

vielen dank, aber ich werde meine eigenen code schreiben (der ist dann halt ich so kompakt, kann aber das selbe).
DirkB
21:32:44 25.05.2012   Titel:   Zitieren

@Minispiri
Das i braucht man nicht wirklich, dafür kann man gleich pos nehmen.
Dann sollte man in alter C-Manier den Zeiger auf das Array auch wieder zurück geben.
C++:
char *strcclr(char *str, size_t pos);

Warum? Dann kann man sowas machen:
C++:
  char t[] = "Hallo Welt!";
 
  puts(strcclr(t, 5));


Eine Überprüfung, ob pos noch innerhalb des Strings ist (also vor dem '\0' liegt) kann man auch noch machen.
Dies ist in C aber nicht üblich. Dafür hat der Aufrufer zu sorgen.
DirkB
21:24:38 25.05.2012   Titel:   Zitieren

Sagt dir ASCII etwas?
Jedes Zeichen hat einen Zahlewert. Für die Zuordnung gibt es Codetabelle.
Sagt dir ASCII etwas?

' ' ist das Leerzeichen (ASCII-Wert 32)
'\0' ist das Zeichen mit dem Wert 0
'0' ist das Zeichen, das die Ziffer Null darstellt (ASCII-Wert 48)

Statt '\0' kannst du auch einfach 0 schreiben (ohne Hochkomma).
Die Zeichenschreibweise macht nur deutlich, was gemeint ist.

Es gibt auch noch andere Codetabellen als ASCII. Z.B. EBCDIC auf (IBM-)Großrechnern.
Minispiri
21:18:18 25.05.2012   Titel:   Zitieren

Moin,

Ich weiß man sollte an sich keine Lösungen posten, aber da ich mich gerade langweile, mag ich meinen Lösungsvorschlag mal posten:

C++:
char* del_ch(char* str, size_t pos)
{
    for(; str[pos]!='\0'; pos++)
        str[pos] = str[pos+1];
    return str;
}


Die for-Schleife wird so lange wiederholt, bis die Nullterminierung erreicht wurde.
Die Zeichen werden alle um eine Stelle nach vorne geschoben, wobei beim ersten Durchlauf das gewünschte Zeichen ganz einfach überschrieben wird.

Ein Leerzeichen ist ganz einfach nur ein Leerzeichen. \0 gibt an, dass an dieser Stelle der String zu Ende ist.
1234567890
21:14:27 25.05.2012   Titel:   Zitieren

ja, danke.

ich wollte noch fragen: was ist der unterschied zwischen ' ' und '\0'?
DirkB
21:05:08 25.05.2012   Titel:   Zitieren

1234567890 schrieb:
ich seh schon, dass wird dann wieder etwas komplizierter.

Das ist eigentlich ein Zweizeiler. (Mit Funktionskopf, Klammern und return sind es 7 Zeilen)

Das mit der '\0' macht es gerade einfach.

Du musst in einer Schleife nicht unbedingt auf sowas wie i<n prüfen.
Du kannst auch prüfen ob ein Arrayelement einen/keinen besonderen Wert hat.
1234567890
20:37:11 25.05.2012   Titel:   Zitieren

DirkB schrieb:
Wo ist der zu Ende?


bei '\0'

ich seh schon, dass wird dann wieder etwas komplizierter.

danke.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.