ich habe folgenden Pointer auf ein chararray, welcher an die Funktion übergeben wird:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
wie kann ich das machen??? danke im voraus Sönke
|
Anzeige
|
char array buchstaben einzeln auslesenich habe folgenden Pointer auf ein chararray, welcher an die Funktion übergeben wird:
wie kann ich das machen??? danke im voraus Sönke Sönke Paschko wrote: > ich habe folgenden Pointer auf ein chararray, welcher an die Funktion > übergeben wird: > >
Probiers mal mit
Oder
Gast
#912100
>sprintf(text, "%c", data[4]);
sprintf() gibt gar nichts aus. Damit kopiert man nur
Texte in einen Speicherbereich. Bei dir "text".
Den kannst du dann mit puts(text); oder printf("%s",text);
ausgeben.
holger wrote: >>sprintf(text, "%c", data[4]); > > sprintf() gibt gar nichts aus. Damit kopiert man nur > Texte in einen Speicherbereich. Bei dir "text". > Den kannst du dann mit puts(text); oder printf("%s",text); > ausgeben. Wo steht was von "ausgeben" ;) Okay im Quelltext. Aber ich denke mal dass er sich dessen schon bewusst ist.
Gast
#912138
>Wo steht was von "ausgeben" ;) >>// jetzt möchte ich den 5. Buchstaben ausgeben printf("%c", data[4]); erstmal danke für die Antworten. leider geht das nicht, ich hol mal ein wenig weiter aus: ich habe eine Funktion welche Buchstaben auf einem LCD anzeigt. diese heist lcd_data(unsigned char temp1); (die gleiche wie im Tutorial) dieser funktion muss ich einen Buchstaben übergeben. nun bekommt meine Funktion ein wort, welches buchstabenweise an die funktion lcd_data weitergeleitet werden soll. nur halt nicht wie in der Funktion lcd_string(); sondern in einer anderen Reihenfolge. ich möchte, das der text sozosagen einfliegt von links, also, dass erst der lezte Buchstabe, dann die beiden letzten usw. angezeigt werden. hierzu benötige ich die einzelnen buchstaben. so soll das dann ungefär im programm ablaufen:
weder das funktioniert noch das vorherige Umwandeln in der form mit sprintf, wie es oben vorgeschlagen wurde. hier nochmal die Funktion lcd_data:
Gast
#912216
Hallo,
void funktion(char *data)
{
char count = 0;
while(*data)
{
data++;
count++
}
while(count != 0)
{
count -= 1;
*data += durchlauf;
while(*data)
{
lcd_data(*data);
data++;
}
}
}
Gast
#912221
äähhmmm sorry, statt der Zeile *data += durchlauf, besser -> *data += count; GRUSS
Gast
#912225
Sowas läuft bei mir unter Vergewaltigung der Sprache C ! Soll das LCD ein Rauschen für eine Zufallszahl erzeugen oder etwas Anzeigen ?
Gast
#912227
Auch nicht besser ! Pointerschänder !
Gast
#912239
Mal angenommen dein wirres Zeugs da oben meint das was ich meine, hier mein bescheidener Vorschlag. Da die Länge des Strings wohl bekannt sein wird, empfiehlt es sich die mit zu übergeben und auch zu benutzen.
Gast
#912243
Kleines Feature: lcd_data(*d); und nicht: lcd_data(*data); **g**
Gast
#912247
Hallo,
meine Funktion war Mist, hier ne neue Version ;-)
void lcd_funktion(char *data)
{
char count = 0;
char *save = data;
while(*data)
{
data++;
count++;
}
while(count != 0)
{
data = save;
count -= 1;
data += count;
while(*data)
{
lcd_data(*data);
data++;
}
}
}
Gruss
Gast
#912251
@fuubar : deine Funktion funktioniert bei mir nicht, Meine Version funzt wunderbar ;-)
Gast
#912253
Viel bringt nicht viel ;-). Besonders nicht auf dem Stack ...
#include <stdio.h>
void funktion(char *data)
{
char * d = data;
while(*d++);
while(--d>=data)
printf("%c",*d);
printf("\n");
}
int main()
{
funktion("HALLO");
}
danke nochmal nur gibt soweit ich das jezt verstehe das script das wort nur rückwärts aus, nicht einen einzelnen Buchstaben oder??? somit stehe ich wieder am anfang, das ich aus dem pointer auf das Array einen einzelnen buchstaben übergeben kann.
Gast
#912377
Hallo, d ist dein Pointer auf den String den du haben willst ! Also: O LO LLO ALLO HALLO
Das kann auch gar nicht funktionieren. "hallo" hat vier Zeichen - worauf greift data[4] zu? Nein, nicht auf das 'o'. Du solltest Dich --damit Du auch die Dir gemachten Lösungsvorschläge verstehst-- mal mit der Arrayindizierung von C vertraut machen. Meine Version
PS: Gott sei dank willst du den Text von links einfliegen lassen. Dadurch kannst du dir das ganze Gerödel mit der Einzelzeichenverarbeitung sparen. Die String-Funktionalität erledigt das wunderbar. Man muss nur wissen, dass ein String immer von der Startadresse bis zum ersten '\0' Zeichen geht. Wenn ich also einen String habe, dann brauche ich nur der String-verarbeitenden Funktion (in dem Fall lcd_string) eine falsche Startadresse vorgaukeln und sie bearbeitet den 'Teilstring' von dieser gefälschten Startadresse bis zum Stringende. Wenn du von rechts einfliegen lassen willst, dann geht das nicht mehr so einfach. Da könnte man allerdings ausnutzen, dass das LCD (zb ein 16 Zeichen breites LCD) am rechten Rand einige Stellen hat, die es nicht anzeigt. > Du solltest Dich --damit Du auch die Dir gemachten Lösungsvorschläge > verstehst-- mal mit der Arrayindizierung von C vertraut machen. Und auch damit, wie in C der Zusammenhang von Arrays und Pointern ist, sowie wie Stringverarbeitung funktioniert. http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F Rufus t. Firefly wrote: > Das kann auch gar nicht funktionieren. "hallo" hat vier Zeichen - > worauf greift data[4] zu? Nein, nicht auf das 'o'. Na na na, zähl besser noch mal nach. ;-) Karl heinz Buchegger wrote:
>
Ist noch früh am Morgen. Das geht auch einfacher (und vor allen Dingen: richtiger)
> Na na na, zähl besser noch mal nach. ;-)
Grr. 's ist früh. Jedenfalls für mich.
Asche auf mein eigentlich schon ausreichend ergrautes Haupt.
Gast
#912428
--len würde die Schleife um 100ms verkürzen ! Eine "\0" Zeigt das Display nicht an. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|