-
Thread
welche Datentypen soll ich nehmen?
jetzt für ne Variable sein soll. Und das ist jetzt portabel, also unabhängig vom Prozessor. Und string gibts eigentlich in C nicht. Ein string ist daher ein Array aus Charactern, also "char" oder char[] Gruß Gerhard
#6734529: > Klar. Der Returntyp von getchar() ist ja auch nicht char. Zeichen sind meist int in c. Nur in Strings oder %c sind es char.
-
Thread
Viele "Daten" in einen µC?
ist in aller Regel wesentlich kleiner als der Flash-Speicher, bringt also nix. Abhilfe: Anderen µC mit größerem Flash verwenden, oder deine String-Konstanten in einen externen Speicher (z.B. SD-Karte) auslagern.
also beim Flashen ins RAM. Woher soll der µC dann zur Laufzeit die Daten herzaubern, wenn die "im RAM abgelegt werden"? Selbstverständlich werden String-Konstanten, die zur Entwurfszeit festgelegt werden, zuerst mal im Flash gespeichert, wo
-
Thread
"while" Bedingung hält nicht was es verspricht
Zeichen mit. > Allerdings wirft das eine neue Frage auf: > > Wie mache ich das denn bei einem String bei dem das Protokol selber > entscheided wieviele zeichen es hat? Das geht in C auf deinem µC nicht vernünftig. Dazu müsste man dynamisch Speicher allokieren und das möchte man auf so einem kleinen
.2C_die_einen_String_liefert.3F
-
Thread
2 Serielle, c167cs
Hallo hab ein Prob. und zwar Progr. ich uC (c167cs L40M). Brauch insgesammt 2 serille Schnittstellen, eine Davon wird durch den UART realiesiert. So jetzt zu meinem prob.: Sobald ich durch den UART (2 Serille ) einen Konstannten string
<<Jörg. wollte einfach einen String mit einer Variblen länge beschreiben. Der code endet immer mit \n. Nachdem der string verschickt worden ist. Soll der string neu beschrieben werden.
-
Thread
Kann keinen String zuweisen wieso ?
Hallo, ich möchte einen ganz normalen String zuweisen aber irgendwie will der Compiler nicht... ich hab schon im Tutorial nachgeschaut und auch nach Anweisung gemacht. Bitte um Hilfe ! [c] char mode[7]; switch(test) { case 0: mode
war schon korrekt so. Man kann aber (und sollte eigentlich), um sicher zu stellen, dass der neue String terminiert ist, dazuschreiben: [c] strncpy(mode,"Hallo",sizeof(mode)); mode[sizeof(mode)-1] = '\0'; [/c]
-
Thread
Arduino Serial ganze wörter abfragen
Wie muss ich meine Variable deklarieren dass ich wörter auswerten kann? Dann lies mal in deinem C++ oder C Buch im Kapitel über 'String' nach.
lernen, wie C-Strings in Form von char-Arrays funktionieren.
-
Thread
was macht itoa
auf INT_MIN ab und gibt für > den Fall der Gleichheit ebenfalls hartcodiert den entsprechenden String > zurück. Simpel, häßlich und zuverlässig. Ja aber was will ich denn auf einem µC mit einem String. Bei itoa mag das noch angehen, aber bei einem div / Null nützt mir das gar nichts.
Karl schrieb im Beitrag #5372958: > Ja aber was will ich denn auf einem µC mit einem String. Meßwerte oder so in einen String umzuwandeln, um das auf einem angeschlossenen Display anzuzeigen, ist ja durchaus üblich. > aber bei einem div / Null nützt mir das gar nichts
-
Thread
#define in C
dann etwa so aussehen: structname.x1 Dafür brauchst du noch nicht mal Klassen, das deht auch in C wunderbar. Schöne Grüße: Z
C] Peter
-
Thread
String zerlegen
Gucke Dir mal die Funktion strok() an! http://www.c-howto.de/tutorial-strings-zeichenketten-stringfunktionen-zerteilen-strtok.html
#2158186: > sscanf(Buff, "A%fAS%1sSF%iF", varAmp, varShape, varFreq); Ersetze mal das %1s durch %c Sollte dein String immer diese Form haben und nur die entsprechenden Variablen varAmp, varShape, varFreq sollen ausgelesen werden, so ist es empfehlenswert bei Mikrocontrollern auf die Verwendung
-
Thread
Software um Daten von µC über RS232 aufzeichnen
Diagramm sehen. Gibt es da eine Software für, die den Comport "ausliest" und wenn ja wie? Wie muss der µC senden? Toll wäre wenn ich die Variablen A-D senden könnte: A:24,21 B:151,26 C:45,23 D:0,25 A:24,25 B: C: D: und so weiter... Tobias
ind C für String Vorbereitung: char text[30]; //Array für Stringaufnahme sprintf(text,"%i\t%i\t\%i\t\%i\r", a, b, c, d);//Daten in einen String mit "TABs" und "RET" umwandeln printUart(text);//Ausgabe des
-
Thread
C++ Simple Funktion um Änderungen auf Display zu schreiben, geht nicht?
_2_disp(0,&line0[0]); write_changes_2_disp(1,&line1[0]); _delay_ms(1000); } } [/c] Es sollen also die beiden Strings line0 und line1 immer wieder aufs display geschrieben werden, allerdings nur deren Änderungen, nicht immer die kompletten Strings. Dann habe ich die Ändrungs-Erkenn-Funktion
Matthias schrieb im Beitrag #7121392: > Wo siehst du ein Problem? Dein String "INA219/ADC-INIT " hat 16 Nutz-Zeichen. Die Funktion strcpy wird folgendermaßen beschrieben: [code] Copies the C string pointed by source into the array pointed by destination, including the terminating
-
Thread
char * Verkettung von Arrays Chars
[C] char TestString[10]; strcpy( TestString, "Juhu" ); char* Str1 = TestString; char* Str2 = TestString; strcpy( TestString, "Hallo" ); Serial.println( Str1 ); [/C] Die Ausgabe
Lies ein C-Buch, dort insbesondere das, was über Arrays, Pointer und Strings steht. Empfehlenswert: Brian Kernighan & Dennis Ritchie, "Programmieren in C", 2. Ausgabe, Hanser-Verlag. Kennt zwar kein C-99, aber
-
Thread
strings kürzen
scheinbar das Problem, dass schon \ nicht als > Sequenzbeginn interpretiert wird, Wenn das im String steht, steht das im String drin. Als "Sequenzbeginn interpretiert" wird es nur im C/C++-Sourcecode.
Marco G. schrieb im Beitrag #4429396: > welche c-Funktion eignet sich am Besten, wenn ich bei einem String, der > von einem AVR empfangen wird, die ersten drei Zeichen entfernen möchte. Das einfachste und speichersparendste ist: [C] char* ergebnis
-
Thread
C und "call by reference"
Pass auf, dass Du die C++ Referenz Übergabe nicht mit Call by Reference verwechselst. In C++ [c] void mach_was(uint16_t& array) { } [/c] In C++ wird "Call by Reference" mit einem Pointer übergeben:
aus */ *bp = 'A'; /* Schreibt das Zeichen 'A' an die Startadresse von bp*/ *(bp+1) = NULL; /* String terminieren */ printf("%s",*bp); /* Gibt den Inhalt von bp aus */ [/c] Hoffe, dass ich etwas zur Verwirrung beitragen konnte.
-
Thread
LCD (HD44780, Displaytech 162C) macht Probleme
zeigt das Display wieder nur einen Balken an. Die 1. Zeile funktioniert super. Beispielcode: [c]// Hier funktioniert alles ... lcd_init(); lcd_string("Hallo Welt!"); lcd_setcursor(0, 2); lcd_string("Hall"); // ... und beim nächsten Befehl zeigt das Display nur einen Balken! lcd_string("o
Hier mal meine komplette main.c: [c] #include <avr/io.h> #include "lcd-routines.h" int main(void) { // Hier funktioniert alles ... lcd_init(); lcd_string("Hallo Welt!"); lcd_setcursor(0, 2); lcd_string("Hall"); // ... und
-
Thread
string buffer löschen
> recive[MAX_STRING_LEN] = "clear "; Ähm. Nein. Du brauchst zumindest ein C Buch, wenn deine C++ Ambitionen nicht hoch sind. [[String-Verarbeitung_in_C]]
"); } if (String(c).equals(String("outc"))) { Wire.send(9); Serial.println("temp0 gesendet"); } Serial.print("c= "); Serial.println(String(c)); }[/c]
-
Thread
String parsen mit strtok
habe ich für eine einzelne Position eine komplizierte Struktur mit if-Verzweigungen aufgebaut: [c] if (extern_string[0] == 'S' || extern_string[0] == 's') { if (extern_string[1] == 'H' || extern_string[1] == 'h') { if (extern_string[2] == '1') {
danke für den Ansatz, Jobst Quis. ich übergebe parse_cmd meinen string, komme dann auch bis [c]block = strtol(s, &s, 10);[/c] 'block' hat danach allerdings den Wert 0. [c]if (*s!='.')return s;[/c] wird dann aber wieder korrekt übersprungen, die Pointer Position
-
Thread
HTML Seite auslagern , ATEMGA
IDEs auch die Escape-Schreibweise, also \" für ein " innerhalb eines > durch "" eingegrenzten String. @TO Das hat mit einer IDE nichts zu tun. Das ist die in C (und C++) vorgesehene Schreibweise, wie man innerhalb eines Strings einen " als Zeichen einfügt. Diese und andere Escape-Sequencen
Rolf M. schrieb im Beitrag #4239342: > C++11 unterstützt raw string literals. Damit kann man so einen String > auch so schreiben: aber Vorsicht, in JavaScript kommt auch sehr schnell ein )" vor. [code] <button onclick="myFunction()"
-
Thread
Entprellen Flankenerkennung
SysTicker++; } static int key1Active(void) { if (P2IFG & T_SET) {return 1;} return 0; } [/c] Und gerade wenn Du blutiger Anfänger bist, und verschiedene Fragen hast, dann poste doch bitte unter einem Namen. Hätten wir gewusst, dass die TX_String geschichte von Dir ist, wäre niemand auf die
gemacht hast. die Routine funktioniert bei leider nicht. Weder toggelt die LED, noch werden die Strings ausgegeben. A. S. schrieb im Beitrag #6227850: > static int key1Active(void) > { > if (P2IFG & T_SET) {return 1;} > return 0; > } hab dort auch vorsichtshalber ein [c] P2IFG
-
Thread
char Buffer[7] Resetten, löschen.
In Java würde > ich array[] = new Array() schreiben und das wäre gelöst. Wie löse ich > sowas in C? Indem du das Array überhaupt nicht löscht, und dich daran erinnerst, das in C ein String dort aufhört, wo das '\0' Zeichen ist. http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F hast du also in C ein Array char Buffer[200]; und willst du ausdrücken, dass dort drinnen ein String mit 0 Zeichen Länge beheimatet ist, dann platzierst du das \0 Zeichen so, dass sich ein String mit 0 Zeichen Länge
-
Thread
STM32 HAL UART Mysterium oder bin ich dumm?
Man sollte auf Controllern auch nicht Null-terminierte C-Strings verwenden, sondern besser Pascal Strings, welche die Laenge zuerst haben. Die haben ausschliesslich Vorteile.
W.S. schrieb im Beitrag #6856614: > Wie lange Strings willst du denn auf deinem µC machen? Auf jeden Fall kommen auch auf relativ kleinen µC recht häufig Strings vor, die länger als 255 Zeichen sind.
-
Thread
Ein paar Fragen zum T6963C
klappt ist die Darstellung von Text auf dem Display. In der Lib wird dazu die Funktion lcd_string verwendet: void lcd_string(char s[]) //print string on lcd (no auto linefeed) { register u08 *c; if (!(c=s)) return; while (*c) { lcd_print(*c); c++; } } Hier wird's schwierig, weil ich in C mit Strings so meine Probleme habe... könnt ihr das für mich in Assembler portieren? :D Ich hab's mal mit lcd_print versucht: void lcd_print
-
Thread
Uart ATtiny1614 Gesperrt
USART_RXCIE_bm; USART0.STATUS = (USART_RXCIE_bm | USART_TXEN_bm); uart.nine_bit_mode = nine_bit; [/c] Das meine Putc Funktion [c] while(!(USART0.STATUS & (1 << USART_DREIF_bp))); USART0.TXDATAL = c; [/c] Ansonsten habe ich im Programm noch nichts. PinB2 als Ausgang, PinB3 als Eingang
Programm - das macht kein Mensch. Man kann mal ein Inline ASM machen wenn es sein muss, ansonsten C oder C++.
-
Thread
Uhrzeit stellen
=0; } } sprintf(str,"%02d",counter); lcd_setcursor (12, 2); lcd_string(str); } } return 0; } [/c]
counter = 0; } sprintf(str,"%02d", counter); lcd_setcursor (12, 2); lcd_string(str); } } } [/C]
-
Thread
Wie das Gradzeichen in einen String packen?
[9] = "T= . " "\xF8" "C"; [/c] denn der Compiler ist verpflichtet aufeinanderfolgende Strings ohne Operation dazwischen zu einem einzigen String zusammenzufassen. So weit so gut, mit dem klitzekleinen Unterschied, dass jetzt klar ist, dass mit "\xF8" das eine Zeichen durch Angabe der Hex-Zahl komplett ist und "C" schon wieder der nächste String ist, der aus einem 'C' besteht. Aus demselben Grund geht auch das hier [c] #define GRAD "\xF8" char bla[] = "T= . " GRAD "C"; [/c]
-
Thread
Externer Interrupt am ATTINY 2313
jetzt so aus. Er arbeitet sich bis zum Sleepmodeaufruf durch, da diese Zeile noch verarbeitet wird. [c]lcd_string("830");[/c] Allerdings kommt er dort wohl nicht raus, weil weder die LED an B5 leuchtet, noch der Text sich auf dem LCD ändert. [c] #include "main.h" #include "temp_eigen.h" #include
// break; // } //} lcd_setcursor( 0, 2 ); lcd_string("830"); //Interrupts aktivieren sei(); sleep_mode(); } } [/c]
-
Thread
Kompletten *Buffer++ auslesen
Präferenz), sich den Anfang in einer eigenen Variable merken und nicht immer verändern, z.B. so: [c]Buffer[StringLen] = c; StringLen++; setData(c); } [/c]
tim[StringLen] = c; StringLen++; setData(c); } } [/c]
-
Thread
#define mit 2 Werten
[c] #define T6963cPutStringXY_P_(X,Y, pString) \ do { \ T6963cSetAddress(T6963C_ADDR_TEXT + (T6963C_TEXT_COLS * (Y)) + \ (X + 2)); \ T6963cPutString_P(pString); \ } while(0) #define T6963cPutStringXY_P(...) T6963cPutStringXY_P_(__VA_ARGS__) [/c] Peter
-
Thread
LCD per SPI ansteuern- Problem mit zu vielen char
Nimm die Größenangaben aus den String-Definitionen auch noch raus. Lass den Compiler sein Ding machen, und normale C-Strings anlegen. Also nicht: [code] rom const char rom hallo[5] = "Hallo"; [/code] Sondern: [code] rom
auch in der main.c inkludiert. Bzgl. der Strings solltest Du die anders organisieren. Wenn Du lediglich einsprachige Texte brauchst, dann kannst Du das auch direkt im Funkltionsaufruf machen, also z.B.: [code] lcd_write_string_rom
-
Thread
Mikrocontroller: Funktion strstr
Guten Morgen, in meiner C Applikation benötige ich die Funktion strstr um ein Wort herauszufinden ob es in dem string vorkommt oder nicht. [c] static char* ptr; ptr = strstr(rxBuffer, "OK"); if(strcmp(ptr,"OK\r\n")) { // tue irgendwas } [/c] Im string kommt das Wort OK vor aber strcmp funktioniert nicht. Der Pointer ptr enthält die Zeichenkette "OK\r\n".
-
Thread
I2C Bus und Sonderzeichen
Zeichen 7 Ecke rechts 0x0e, 0x1f, 0x0e, 0x11, 0x0e, 0x11, 0x0e, 0x00 // Zeichen 8 HDD }; [/c] Im Programm kann ich es mit [c] lcd_putc(0); // Ausgabe Zeichen 1 lcd_putc(1); // Ausgabe Zeichen 2 [/c] ausgeben: Wie kann ich diese Zeichen im I2C Bus einbinden bzw. aufrufen? Dort schreibe ich ja erst: [c] i2c_init(); // Starte I2C Bus lcd_init(); // Starte I2CLCD [/c] und dann später [c] lcd_printlc(1,1,"Die 1. Zeile"); // Text Zeile 1 [/c
-
Thread
String Array verarbeiten / Arduino
Jetzt wo klar ist, um welche enums es sich handelt, kann man das Strukt anpassen. [c] typedef struct s_iomodus { sensor sensorType; variableType variableType; String description; } iomodus_t; [/c] Ich find diesen Thread ausserst amüsant. So viele freie Tür Temperatur IOs
es funktioniert(E) nur mit [c] const char* description; [/c] ist es ok???? das mit String muss ich noch begreifen!
-
Thread
String terminieren wirklich notwendig?
Wenn es wirkich notwendig wäre den String zu terminieren, dann würde doch das hier nicht funktioniere und in eine endlosschleife enden müssen: [c] #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 3 int main
immer um die Terminierung zu kümmern, dann hindert ihn ja keiner daran, seine eigene, bequemere String-Repräsentation zu verwenden und nur dort wo es nötig ist (im wesentlichen für calls in die stdlib) auf C-Strings zu wechseln. Huch, ist ja schon passiert. C++ und std::string anyone? XL
-
Thread
optionale Parameter in C?
Hallo! Kleine Frage: Kann ich in C auch optionale Parameter verwenden? Bei mir motzt der Compiler rum, aber vllt mach ich ja auch was falsch. Habs so versucht, wie es wohl in C++ richtig wäre. Kann C das nicht? mfg see4far
vollständigen Compilerlauf machen. Ich bin aber schon so weit, dass ich bei folgender Routine... [c] int csh_PrintF( STRPTR formatString, ... ) { va_list vlist; int cnt; if( Gbl_BridgeModeActive) cnt = fprintf_P( VCOM, formatString, vlist); else cnt = fprintf_P( VCOM, formatString
-
Thread
String übergeben mit Pointer
die Zeile PrintLCD("Hello World")) #include <p18f6621.h> #include <compiler.h> #include <string.h> #include <stdlib.h> / #define SPI_OUT LATF6 #define SPI_IN LATF7 #define SPI_CLK LATF4 #define SPI_CS LATF5 char spiPutGetByte(char c) { char ret; unsigned char mask;
Da haben wir es: http://ww1.microchip.com/downloads/en/devicedoc/MPLAB_C18_Users_Guide_51288j.pdf 2.7.3 String Constants void PrintLCD( auto const rom char *ptr ) sollte helfen. Alternativ, wenn Du diese String selbst aus dem Programm befüllen willst (später)
-
Thread
char array mit Hex-Werten
Noch besser wäre freilich ein [c]static const unsigned char string[] = "guard time\0";[/c] :-)
Mark Brandis wrote: > Noch besser wäre freilich ein > > [c]static const unsigned char string[] = "guard time\0";[/c] Wieso? Der original "Hex-String" hat auch keine zwei Nullen am Ende.
-
Thread
String verändern
[C] char* c = "N$12" char* d = c + 2; [/C]
Na ja. Soo unrecht hat er auch wieder nicht. Wer das C-String Handling verstanden hat (und das ist nicht weiter schwer und in jedem Buch ausreichend gut beschrieben) braucht so eine Frage nicht zu stellen. Zugegeben, der Einleitungssatz hätte etwas
-
Thread
ADC auslesen geht nicht richtig!
nicht initialisiert und zeigt dann irgendwohin... Also besser z.B.: [c] char uart_putd_PC( double value ) { char string[8]; sprintf(string,"TEST %.2f",value); uart_puts_PC( string ); return(0); } [/c]
! sprintf(string,"TEST %.2f",value); uart_puts_PC( string ); return(0); } [/c] es muss heißen: [c] char uart_putd_PC( double value ) { char string{50]; // Korrektes ARRAY of char sprintf
-
Thread
html in c umwandeln
im Beitrag #2892659: > ist nun wirklich trivial und eine Anfängerübung für > Filebehandlung in C. Ganz so trivial ist das auch nicht, da HTML u.A. Attribute mit " versieht und auch der "Text" ggf. Sonderzeichen erlaubt, welche in "normalem" C-Strings nicht ganz erlaubt sind, bei UTF-8/Unicode
alles machen lässt. In dem Fall ist das einfach nur ein wenig Text-Aufbereitung, so dass man es als String durch den C-Compiler bringt.
-
Thread
String umwandlung und auffüllen
reingibt, muß wenigstens 4 Zeichen fassen können: [c]char my_str[4]; uint8_t my_val; my_val = 42; to_string[my_str, my_val);[/c] Ergebnis: "042" in my_str, und nullterminiert.
argh.. [c]void to_string(char *str, uint8_t val) { str[0] = val / 100 + '0'; val %= 100; str[1] = val / 10 + '0'; val %= 10; str[3] = val + '0'; str[4] = 0; }[/c]
-
Thread
Datentyp für Strings
Ich möchte gerne eine Zeichenkette an eine Funktion übergeben. bool uart_e_send(const int8_t* string) Nun weiss ich das man in C für Strings ein Char-Array nimmt. Doch wiso nimmt man nicht unsigned char? Also: bool uart_e_send(const uint8_t* string) Gemäss ASCII Tabelle sind alle Zeichen
Nun, in C gibt es kein dafür gemachten Datentyp. Trotzdem kann man in C strings verarbeiten so das am schluss das richtige rauskommt. Macht man das jetzt mit char, uint8_t oder int8_t und falls man char oder int8
-
Thread
Adresse von char-array Zeiger?
: [c] char *ptr; char string[10]; ptr=string; [/c] char *ptr stellt dabei natürlich keinen Speicher bereit, aber durch die Zuweisung zeigt ptr anschließend auf den gleichen Speicher wie string
string[0] = 'A'; [/c] Ein Fall verbleibt, nämlich wenn string Übergabe-Parameter ist: Mit [c] void foo (char string[10][10]) [/c] wird nicht etwa das genze Array in die Funktion geliefert, sondern
-
Thread
Vorteil/ Nachteil?
Welchen Vorteil hat diese if bedingung [c] if(x == 1) { x = 0; TX_String("\nxy\n"); } else { x = 1; TX_String("\nyz\n"); } [/c] gegenüber dieser [c] x ++; if(x > 1) { x = 0; TX_String
Beantwortet deine Frage nicht, aber warum schreibst du nicht [c] if (x=!x) TX_String("\nxy\n"); else TX_String("\nyz\n");[/c]
-
Thread
Parsen klappt nur bis zur ersten Stelle.
[c] ( (pToken = strtok(NULL, "|")) ) [/c] Soweit ich die Doku zu strtok verstanden habe, versuchst du in einem NULL-String dein Trennzeichen zu finden...
Compiler einzustellen, aber char ist wohl vorzeichenbehaftet (signedness). Kleiner Tip. Wenn ich Strings darstellen will, deklariere ich die immer so: [c] uint8_t sString[] ... [/c] Selbst für einen Puffer von Daten nehme ich meistens uint8_t, sofern diese irgendwie Byteorientiert vorliegen.
-
Thread
Defekte SIM800 Module im Umlauf?
800C Module sind da, noch laufen sie stabil. [c] /* Sende eine sms an das Ziel mit Text */ int SIM800_SendSMS(String text,String ziel) { char buf[64]; /* SMS text mode */ serialSIM800
Chris J. schrieb im Beitrag #5630398: > Wie kriegt man so einen String zurück in einen C char Array? Mit der Methode String::c_str() siehe https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/c_str/
-
Thread
AtMega16 UART mit Interrupt Problem
Hallo Da kann man nur Oliver wiederholen: C hat es nicht so mit Strings. Gruß Joachim
XXX schrieb im Beitrag #2352576: > C hat es nicht so mit Strings. Um es deutlicher zu sagen : Man kann Strings in C nicht auf diese Art vergleichen. Und bitte: Lerning by doing ist schön und gut, aber doing ohne zu wissen was man
-
Thread
goto verpönt - was dann nehmen?
Zeichen reinschreiben, weil das letzte Zeichen das berühmte 0 Byte ist, auch so eine Krücke, damit C das Stringende erkennt. Schreibst Du 10 Zeichen rein passiert erst mal nichts aber Du merkst es wenn Du den String wieder auslesen möchtest. Nicht nur das es keine Strings in C gibt, eben nur diese Zeichenarrays
Zeichen reinschreiben, weil das letzte Zeichen das berühmte 0 Byte > ist, auch so eine Krücke, damit C das Stringende erkennt. Schreibst Du > 10 Zeichen rein passiert erst mal nichts aber Du merkst es wenn Du den > String wieder auslesen möchtest. Nicht nur das es keine Strings in C > gibt, eben nur
-
Thread
PIN einlesen, in variable laden, maskieren und anschließend abfragen-PROB
Sollwert messen:*/ sollwert = GetADC_8bit(2); sprintf(buffer, "%d", sollwert); lcd_string("Erfolgreich gemessen");lcd_setcursor(0, 2); lcd_string("Gemessen:");lcd_string(buffer); _delay_ms(1500); lcd_clear(); lcd_setcursor(0,1); lcd_string("Programm startet
lcd_setcursor(0,2); //sprintf(buffer, "%d", i); itoa(i, buffer, 10); lcd_string(buffer); _delay_ms(1000); } lcd_clear(); lcd_home(); return sollwert; } [/c] Gesamtes Coding: [c] #include <stdio.h> #include <stdlib.h> #include <stdint.h>
-
Thread
"itoa" unklarheit
Ich benutze bei C18 oft die itoa-funktion (integer to string) um mir diverse werte im LCD anzeigen zu lassen ... Beispiel: [c]LCD_WriteValue(itoa(minuten));[/c] Die entsprechende Funktion sieht so aus: [c] void
Standard abweichend. Um auf Deinen Codeschnippsel zurückzukommen, das muss dann also so aussehen: [c] char Buffer[20]; itoa(minuten, Buffer); LCD_WriteString(Buffer); [/c]
-
Thread
Arduino - Speicheroptimierung?
for (int i = 0; i < length; i++) { str[i] = 0; } } // searches for the string sfind in the string str // returns 1 if string found // returns 0 if string not found char StrContains(char *str, char *sfind) { char found = 0; char index = 0; char len;
); delay(997); }[/c]