Hallo, meine ersten Gehversuche in C. Bitte nicht steinigen, habe viele Posts gelesen, aber nichts gefunden oder die Antwort nicht erkannt. (Meine Frau sagt ich könnte gut suchen, nur das mit dem Finden funktioniert nicht). Ich möchte ein einkommendes Zeichen (vom UART) einem String hinzufügen. Aber genau da bekomme ich eine Fehlermeldung. char zeichen; char daten[20]; // die einkommenden Zeichen: @U25.3 zeichen=comrx(); if (zeichen=='@') { zeichen=comrx(); if (zeichen=='U') { for (x=0; x<4; x++) { zeichen=comrx(); strcat(daten, zeichen); <- Erz.Warnung } } } Erzeugte Warnung: passing argument 2 of 'strcat' makes pointer from integer without a cast Bei Verwendung von strcpy die selbe Warnung.
strcat braucht 2 strings und nicht nur ein char. du müsstest aus dem char esrt einen string machen. char tmp[2]; tmp[0] = zeichen; tmp[1] = 0; strcat(daten, tmp);
Marc van den Broek schrieb: > char daten[20]; char *dpointer = daten; und dann *dpointer = comrx(); // Zeichen speichern dpointer++; // Vorspulen und zu letzt: *dpointer = '\0'; // String terminieren Allerdings ist der Ansatz etwas fehleranfällig; dein Programm wird sich unweigerlich früher oder später "verschlucken", zB sobald das Zahlenformat ändert. Ich würde eher zeilenweise einlesen und dann parsen.
Vielen Dank für die superschnelle Antwort. Habe es probiert und geht natürlich (Vorschlag Peter). Ich stelle mich in C doof an. Hoffe das es sich in nächster Zeit bessert und ich Euch nicht zusehr nerven muß. Gruß aus Belgistan, Marc
Hallo Tom, Deinen Vorschlag verstehe ich noch nicht. Muß erst mal etwas Intelligenzwässerchen nachtanken. Öhm, das mit dem * in *dpointer, was hat es damit auf sich? Und dann das "Vorspulen" mit dpointer++ Wie kommt das in meinen String daten?
wie wandle ich den String (daten) am besten in eine Fließkomma-Zahl? strtol? oä.
Marc van den Broek schrieb: > wie wandle ich den String (daten) am besten in eine Fließkomma-Zahl? > strtol? hast du mal gelesen was strtol macht? Convert string to long integer versuche es mal mit strtod
Da du gut im Suchen bist, solltest du mal dein Bücherrregal nach einem C-Buch absuchen. Und wenn du keines findest: eines anschaffen. Programmiersprachen, und C ist da ein ganz spezieller Fall, kann man nicht nach dem Muster Try&Error lernen. Da braucht es jemanden/etwas was einen durch den Lernprozess durchführt.
Welches Buch würdest Du mir empfehlen? Es gibt so viele und bisher habe ich anscheinend nur Fehlkäufe, ...
Marc van den Broek schrieb: > Welches Buch würdest Du mir empfehlen? Ist nicht ganz einfach > Es gibt so viele und bisher habe ich anscheinend nur Fehlkäufe, ... Was hast du denn und warum waren die Fehlkäufe?
Wenn du schon ein Buch hast: Du musst es von vorne weg durcharbeiten! Wichtig: Nicht als 'Gute Nacht Lektüre' zum drüberstreuen lesen sondern effektiv durcharbeiten! Die Beispiele ausprobieren, die Beispiele variieren, wenn keine Aufgaben am Kapitelende im Buch sind, dann erfinde dir welche. Es macht keinen Sinn im Schnelldurchlauf da durchzurauschen. Das ist wie bei lebenden Sprachen: Den Sprachführer an 3 Nachmittagen durchzulesen bringt nix.
Ich möchte jetzt diese Bücher nicht schlecht machen, denn die meisten sind sicherlich OK, vorausgesetzt man wendet sie in den vorgesehenen Bereichen an (DOS, Windows, AVR). Da ich c nur in den AVR's verwende und von C keine Ahnung habe suche ich etwas passendes. Beispiele: * AVR-Mikrocontroller in C programmieren (Franzis) + Gute Einführung in die C-Programmierung in Kombination mit Mikrokontrollern - geht sehr wenig auf die Details der beigefügten Sourcecodes ein * C-Programmieren leicht gemacht (Microsoft) + Sehr gute Einführung in C - keine Basics für AVR (habe ich aber jetzt durch das Buch "AVR-Mikrocontroller in C programmieren" - erfordert DOS oder Windows 98 (läuft jetzt aber seit gestern auch unter XP) * C++ von null auf hundert - zu komplex (mein Fehler: sehe den Wald vor lauter Bäume nicht) * Messen Steuern Regeln mit USB - zu wenig C/C++ - zu wenig AVR * AVR-Mikrokontroller in C programmieren (Franzis) + vermittelt gut die "Elektronik und Hardware" - vermittelt nur die Sprache Processing - Processing ist nur etwas kompatibel mit C - Buchtitel sollte lauten: AVR-Mikrokontroller in Processing programmieren Die weiteren Buchtitel erspare ich mir hier.
Marc van den Broek schrieb: > Da ich c nur in den AVR's verwende und von C keine Ahnung habe suche ich > etwas passendes. Dein Fehler besteht IMHO darin, dass du dich zu früh auf 'C auf mit dem AVR' konzentrierst. C ist eine genormte Sprache und als solche funktionieren die Basisdinge überall gleich (speziell zb Strinverarbeitung). Ganz egal, ob es sich um einen kleinen µC oder einen PC oder einen Mainframe oder einen Supercomputer handelt: Der Grundaufbau und die Grundlagen der Sprache sind überall dieselben. Natürlich gibt es dann Spezialitäten, die auf den jeweiligen Systemen anders sind. Auf einem Supercomputer wird es nun mal keine Ports geben, an denen LED angeschlossen sind. D.h. C (das ist: die Sprache C an sich) lernen kannst du genausogut auf einem PC. Ganz im Gegenteil, es ist sogar vernünftig das zu tun. Denn die C Bücher gehen von gewissen Grunddingen aus. Ein C-Lehrbuch setzt vorraus, dass ein printf eine Ausgabe auf einer Konsole machen kann. Und zwar muss das einfach so funktionieren, ohne dass du als Programmierer da etwas machen musst. Dazu kommt, dass du auf einem PC, eben auch wegen der besseren Umgebungsbedingungen wie zb Debugger oder der Möglichkeit sich Zwischenergebnisse ganz einfach ausgeben zu lassen, um einiges schneller lernst als wie wenn du erst mal 15 Stunden benötigst um die erste Ausgabe auf ein Terminal zu erreichen um dir irgendwelche errechnete Zahlenwerte ausgeben zu lassen. Die generelle Empfehlung lautet daher oft: * lern erst mal C an sich. * und erst dann die Spezialitäten, die sich in der µC-Programmierung ergeben. Der zweite Punkt fällt um einiges leichter, wenn man sein grundelgendes Handwerk erst mal soweit beherrscht, dass gewisse Dinge in Fleisch und Blut übergegangen sind. Es ist nun mal auf lange Sicht vernünftiger, erst mal die Grundlagen der Metallbearbeitung zu lernen (Umgang mit Feile, Hammer) als gleich zu versuchen, mit einer CNC-Fräse das Gehäuse eines Differentials mit möglichst geringem Gewicht zu produzieren. > * C-Programmieren leicht gemacht (Microsoft) > + Sehr gute Einführung in C > - keine Basics für AVR (habe ich aber jetzt durch das Buch > "AVR-Mikrocontroller in C programmieren" > - erfordert DOS oder Windows 98 (läuft jetzt aber seit gestern auch > unter XP) Ich kenn das Buch nicht. Aber das hört sich nach einer allgemeinen Einführung in C an. Genau das was du erst mal brauchst. Erst mal die Grundlagen der Sprache lernen. Arrays, Strings, Funktionen, Strukturen. All das ist Standard-C (funktioniert also überall gleich), ist aber dein Handwerkszeug, wenn es in die Spezialitäten der C-Programmierung auf einem AVR geht.
Ok, sehe ich ein. Die Softw. benötige ich für ein µP gesteuertes Netzteil (mit L200). Mein Problem wurde aber mit den erhaltenen Antworten sehr zufriedenstellend gelöst. Ich bin Happy, danke.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.