Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Leerzeichen aus String löschen (war: frage?)

Empfohlene Antworten

Veröffentlicht

kann mir mal jemand helfen. bin heute schon den ganzen tag am verzweifeln.

ich hab folgendes problem.(bin noch ein neuling beim programmieren^^)

ich will unten einen string eingeben und aus diesem string die leerzeichen löschen.

irgendwie funktioniert meine funktion aber nicht. sie hört nach dem ersten leerzeichen auf?!?!?!?

hier mal das programm:

#include <stdio.h>

#include <string.h>

void entfernen (char *s){

char *ptr ;

while(*s != '\0')

{

if (*s != ' ')

{

*ptr++ = *s;

}

*s++;

}

*ptr = '\0';

s = ptr;

}

main(){

char string[20];

printf("bitte etwas eingeben: \n");

scanf("%s", &string);

entfernen (string);

printf("%s", string);

return 0;

}

Das liegt nicht an deiner Funktion. Lass dir doch den String mal nach dem Einlesen ausgeben ;)

Und nebenbei: "frage?" ist ein denkbar schlechter Threadtitel. Eine Frage hat hier nämlich so ziemlich jeder, der einen Thread erstellt. Ich hab das mal für dich angepasst, beim nächsten Thread bitte selbst einen aussagekräftigen Titel ausdenken.

oke, war vlt ne blöde Überschrift....

hast du mich falsch verstanden oder ich dich.

ich schreibe z.B bla bal. ich möchte das dieses Leerzeichen gelöscht wird und dann dann da steht: "blabla"

sorry das ich hier so viele poste, aber ich bin zum eresten mal in einem forum und kenn mich noch nicht so gut aus.

also ich denke das irgendwas an den algorithmus nicht stimmt in meiner funktion.

ich lass mir ja danach den string ausgeben in der printf. aber bei der ausgabe kommt nicht das raus was ich eingentlich vor hatte^^

Das Programm enthält mehrere Fehler. Unter anderem den bereits angesprochenen Fehler in der Zeile mit dem scanf Aufruf.

wieso bitte ist das falsch mit scanf?

wieso bitte ist das falsch mit scanf?

scanf mit %s liest nur bis zum ersten Leerzeichen ein. Es steht von Anfang an nicht mehr in deinem String drin.

Darum hatte ich dir auch den Tipp gegeben, den String nach der Eingabe einfach mal auszugeben, dann hättest du das gesehen.

Wenn du eine ganze Eingabezeile einlesen willst, benutz fgets mit stdin.

Und noch ein paar Anmerkungen:

  • Dein Zeiger ptr ist nicht initialisiert. Es wundert mich, dass dir das Programm nicht sofort um die Ohren fliegt.

  • Bei diesem Code bewirkt das Sternchen gar nichts:
    *s++;



  • Du kannst innerhalb der Funktion den Zeiger s "umbiegen", das wirkt sich aber nicht auf den Zeiger auf, der beim Aufruf der Funktion benutzt wurde, weil die Funktion mit einer Kopie arbeitet.

  • Du kannst innerhalb der Funktion den Zeiger s "umbiegen", das wirkt sich aber nicht auf den Zeiger auf, der beim Aufruf der Funktion benutzt wurde, weil die Funktion mit einer Kopie arbeitet.

Sind Zeigerparameter nicht Call by Reference?

hmm, notfalls muss man halt die Adresse des Arrays übergeben.

ich hab jetzt mal ein bisschen rumprobiert und oben in der funktion meinem *ptr s zu gewiesen und bei *s++ den zeiger weggelassen und auf einmal funktioniert es ?!?!

das mit dem einlesen mit scnaf hab ich nicht gewusst. hab jetzt die fgets verwedendet, danke für den tipp ;)

sieht jetzt so aus:

#include <stdio.h>

#include <string.h>

void entfernen (char *s){

char *ptr = s ;

while(*s != '\0')

{

if (*s != ' ')

{

*ptr++ = *s;

}

s++;

}

*ptr = '\0';

s=ptr;

}

main(){

char string[20];

fgets(string,sizeof(string),stdin);

entfernen(string);

printf("%s",string);

return 0;

}

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.