Stringmanipulation Teilstring aus Vollstring

Hi,

ich suche eine Funktion oder Lösung, um aus einem Stringarray einen Teil rauszuschneiden bzw. vorne und hinten 1 Zeichen abzuschneiden.

Der char - String :

char meinstring [10] = "";

Diesem String werden von einer anderen Quelle woanders im Programm 10 Zeichen aus externen Daten zugewiesen. Kann ich inhaltlich dort nicht manipulieren

Inhalt jetzt z.B. : "#abcdefgh#"

Jetzt soll das erste und das letzte Zeichen weg.

Übrig bleibt in neuerstring dann "abcdefg" und soll ausgegeben werden

display.println( neuerstring );

In Basic wäre das mit midstring(....) ganz easy.

Für Arduino-C++ habe ich leider nichts Brauchbares oder verständliches gefunden.

Das gibt doch sicher auch 1-Zeiler, die so was erledigen?

https://docs.arduino.cc/language-reference/de/en/variables/data-types/stringObject/

Du sollst dir mal die Mühe machen Dokus auch zu lesen.

Wieder einmal das Problem, das nicht das ganze Problem geschildert wird. U.U. gibt es ganz andere, einfachere Lösungen, die du dir durch deine Fragestellung selbst verbaust.

TIPP: Zeige den ganzen Code. Du wirst überrascht sein, was alles möglich ist.

Wenn du mir sagst, nach was ich genaus suchen muss, lese ich das gerne. Ideal wäre ein Beispiel.

Nachdem ich jetzt seit 2 Stunden leider erfolglos mit Docu-Lesen war, habe ich es gewagt hier zu fragen. Aber es geht leider wie immer. :frowning:

Mein Problem ist ganz klar geschildert. Der ganze Code ist völlig uninteressant und nicht nötig.

Das ist kein C-String.
OK, gerade noch so.
Aber das ändert sich sofort!
Denn:

Das passt da nicht mit Null rein, darum ist es kein String.

E:\Programme\arduino\portable\sketchbook\sketch_feb19f\sketch_feb19f.ino:1:25: warning: initializer-string for 'char [10]' is too long [-fpermissive]
    1 | char meinstring [10] =  "#abcdefgh#";
      |                         ^~~~~~~~~~~~

Du arbeitest/denkst schlampig.

char meinstring [10] =  "#abcdefgh#"; // der String, der keiner/kaputt ist

void setup()
{
  Serial.begin(9600);
  *(meinstring + 9) = 0;
  Serial.println(meinstring + 1);
}

void loop()
{

}

Woher diese dusselige Annahme?

Die Frage ist schon kaputt.

2 Stunden Doku lesen ... da hast du die Einleitung geschafft und das Einführungshapitel. Nimm' dir ein Buch über Arduino für die Grundlagen (die haben ~ 200 Seiten) und eines über C (~ 200 Seiten) - oder C++ (~ 1200 Seiten) wenn dir der Syntax komplett fremd ist. Dasfür brauchst du ~ 6 Wochen, dann hast du die Grundlagen. Du kannst auch versuchen abzukürzen - wird nur nicht funktionieren.

Beitrag mit Link auf Wunsch des Erstellers gelöscht

Ich habe heute 2 Stunden nur mit diesem speziellen Problem verbracht. Leider erfolglos. Und ich lese seit Jahren Programmierdokus aller Art - immer wieder. Leider bin ich nicht so schlau wie manche Leute hier und weiß nicht alles. Aber fragen darf man hier wohl nicht mehr?
Leute wie du gehen mir auf den Sack! Nur Provokationen ohne Wert.

Doch, darf man.

Nur die meisten, die dir darauf spielend leicht eine Antwort geben könnten, hast du vergrault.

Warum sollten User, die du beleidigst, ihre Zeit opfern und dir helfen?

strtok

Da lande ich nur auf dem Profil von ihm. Und ehrlich gesagt interessiert es mich nicht mehr.

Für jemand, der weiß, wie es geht, wäre ein helfendes Beispiel anhand meiner Angabe in der Frage wohl nicht mehr als ein 3-Zeiler. Und das Thema wäre erledigt. Stattdessen folgt eine Antwort nach der andern, von Leuten, denen vielleicht langweilig ist und die gerne andere provozieren, und niemandem helfen.

Ich stecke diese Leute jetzt alle der Reihe nach in den Blockierfilter. Vielleicht bleiben dann Leute übrig, die wirklich helfen können und wollen ohne zu provozieren und zu lehrmeistern.

Ich habe das Tutorial entfernt, da ich es für diese Person nicht bereitstellen möchte.

Gruß Tommy

Hallo @uwefed , kannst den @unofan2000 bitte blockieren.
Bitte

Wenn ihr euch mal wieder beruhigt habt, sollte @anon1549072 sich den "Ganzen Code" von @combie (#7) ansehen.

Wenn die zwei Zeilen des Ganzen Code (7 Zeilen) nicht das Problem lösen, ist da ein Problem in der Problembeschreibung, und ein komplett-Beispiel ist sicher klarer als Prosa.

Ein Tip: Man muss nicht jedem sagen dass er nervt. Aber ertragen, falls man es gesagt kriegt. (Ich gehe mal davon aus, dass man Reaktionen erhofft, wenn man hier postet.)

Ein paar wenige Leute hier habe ich übrigens hier für mich auf "ignored" gesetzt. Und verkneife mir in der Regel nachzusehen, was sie in der "Hidden Message" von sich gegeben haben.

1 Like

Was ist an meiner Problembeschreibung unverständlich?
Ich möchte einfach das erste und letzte Zeichen eines char-String-Arrays weg haben.
Ohne dass ich 3 Jahre ein EDV-Studium mit c++ als Hauptthema besuchen muss. Ich habe nun mal nur Anfängerlevel.
Ist das so schwer zu verstehen?
Ist da niemand fähig oder willens mal einen verständlichen 2 oder 3 Zeiler als Beispiel zu posten? Bisher besteht der Thread fast nur aus Angriffen und nicht zielführendem drumherum. Ein Verweis auf ein C++ Buch z.B. ist keine Hilfe. Denn da habe ich die (einfache) verständliche Lösung auch nicht gefunden.

Der Verweis reicht nicht, du musst es auch lesen.
Verstehend lesen.

Dein Beitrag #21 ist völlig unverständlich.

Du hast eine Komplettlösung erhalten, die du ignorierst.
Diese zeigt auch, wie man eine Problemlösung in wenigen Zeilen Komplett demonstrieren kann.

@combie hat es sich dir zuliebe sogar verkniffen zu zeigen, dass es zig Libraries gibt, die die Lösung eleganter aussehen lassen, sondern simplestes Serial.println verwendet.
Dir zuliebe hat er die zwei Aufgaben (erstes Zeichen abschneiden / letztes Zeichen abschneiden) auf zwei Code-Zeilen verteilt, obwohl man da auch einen von dir favorisierten Einzeiler draus machen könnte.

Du sollst nicht wahllos Dokus lesen, du sollst Arduino programmieren lernen. Wenn du glaubst, "Dokulesen" löst das, dann bist du am falschne Dampfer - aber IMO hast du das selber gemerkt. Problem ist nur, du musst selber über deinen Schatten springen und anfangen zu lernen - von der Picke auf. C/C++ ist nicht Basic, das muss mal ins Hirn.

Mein definitiv letzter Post von mir in diesem Forum.

Bitte meinen Account löschen!

Hier fehlt leider die gesetzlich vorgeschriebene Möglichkeit, sich selbst abzumelden zu können.

Also "uwefeed" oder wer auch immer das liest - bitte lösche meinen Account umgehend!

Danke an die leider ganz wenigen guten Helfer, die mir ohne Klugscheisserei und Provokationen bis hin zu Beleidgungen gerne und gut geholfen haben.

Viel Spaß nun beim Nachkarteln. Meine speziellen "Freunde" haben ja jetzt ein gefundenes Fressen um sich nachträglich weiter über mich auszutoben.

Der Klügere gibt nach und ist nun weg!

Wer sich für eine Lösung interessiert:

char meinstring[] = {"#abcdefgh#"};
char deinstring[] = {"xxxxxxxxxx"};

void setup()
{
  Serial.begin(9600);
  Serial.println(F("\nStart"));
  Serial.println(meinstring);
  for (byte j = 0; j < strlen(meinstring) - 2; j++) deinstring[j] = meinstring[j + 1];
  deinstring[strlen(meinstring) - 2] = '\0';  // Zeichenkettenendemarkierung
  Serial.println(deinstring);
}

void loop() {}

Zu #32: Hatte ich übersehen, kaufe mir eine Brille :nerd_face: