mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C befehle für anfänger


Autor: stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo finde ich die C befehle für einsteiger um mit ein Amtel programieren
zu können?

Danke im vorraus

Autor: Ansgar Hartmann (ansgar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wenn du nach links in die Menueleiste schaust, findest du das
AVR-GCC-Tutorial.

Gruß Ansgar

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C-Befehle allgemein findet man auch in C-Büchern.
Sonst kann ich mich Ansgar anschliessen. In den Datenblättern zu
neueren Controllern sind in der Regel auch Code-Beispiele genannt.

Autor: Fischfreund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei C hast du nur eine Handvoll Befehle. Ist nicht so wie bei Basic.
Statt Befehle verwendest du Funktionen. Du kannst Funktionen selbst
erstellen, aber auch fertige Funktionen aus Headerdateien nutzen.
z.B."#include <string.h>" für String-Bearbeitungs Funktionen(was du
bei der UART-Geschichte neulich sicher schon bemerkt hat)(wenn du der
selbe Stefan bist^^). Du arbeitest dann eh Hauptsächlich mit eigenen
Funktionen, die du in Abhängigkeit von irgendwelchen Bedingungen
ausführst. Ist zu Beginn ein wenig Gewöhnungsbedürftig am Ende aber
wesentlich logischer aufgebaut.

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht wohl eher um die AVR-spezifischen Makros.
Der Rest (bis auf die ISRs) ist ja Standard-C.
Die Interruptbehandlung und die ISR-Deklaration ist ja von Compiler zu
Compiler verschieden.

Autor: flolli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
ich wollt fragen wie ich eine funktion erstellen kann in c um eine 
schleife zu erzeugen??

ich meien wenn ich ein rechenprogrammerstell und die rechnung fertig ist 
das das programm direckt wieder von vorne beginnt und ich eine neue 
rechnung beginnen kann


bitte bitte hilfe

Flolli

DANKE :D

Autor: Engelchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst Du Basic?

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bei C hast du nur eine Handvoll Befehle. Ist nicht so wie bei Basic.
>Statt Befehle verwendest du Funktionen. Du kannst Funktionen selbst
>erstellen, aber auch fertige Funktionen aus Headerdateien nutzen.
>z.B."#include <string.h>" für String-Bearbeitungs Funktionen(was du
>bei der UART-Geschichte neulich sicher schon bemerkt hat)(wenn du der
>selbe Stefan bist^^). Du arbeitest dann eh Hauptsächlich mit eigenen
>Funktionen, die du in Abhängigkeit von irgendwelchen Bedingungen
>ausführst. Ist zu Beginn ein wenig Gewöhnungsbedürftig am Ende aber
>wesentlich logischer aufgebaut.

lautes Lach

>Ist zu Beginn ein wenig Gewöhnungsbedürftig am Ende aber
>wesentlich logischer aufgebaut.

lautes doppel Lach

Die Funktionen und Subs von Basic sind von hunderten Progs.
optimiert wurden. Wenn Du der Meinung bist es besser zu können,
dann mach so weiter!

Carsten

PS versuch Dich doch mal an der len Funktion um eine Stringlänge
zu ermitteln!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
flolli wrote:
> hallo
> ich wollt fragen wie ich eine funktion erstellen kann in c um eine
> schleife zu erzeugen??
> Flolli

3 Möglichkeiten:
1) die einfachere: nimm ein GOTO
2) die konsequentere: kauf dir das Buch "Programmieren in C" von K&R,
   lies es gründlich durch und handle nach den Regeln,
   die dort beschrieben sind.
3) die alternative: programmiere Basic und minmm Möglichkeit 1)


@ Carsten:
> :
> lautes Lach
>> Ist zu Beginn ein wenig Gewöhnungsbedürftig am Ende aber
>> wesentlich logischer aufgebaut.
> lautes doppel Lach
Das interessiert keinen mehr.
Der Originalpost ist 1/2 Jahr alt.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> PS versuch Dich doch mal an der len Funktion um eine Stringlänge
> zu ermitteln!

Ja, und?
int my_strlen(char* str)
{
  int cnt;
  if(!str) return 0;
  for(i=0; *str; str++, i++);
  return i;
}

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
flolli wrote:

> ich meien wenn ich ein rechenprogrammerstell und die rechnung fertig ist
> das das programm direckt wieder von vorne beginnt und ich eine neue
> rechnung beginnen kann

Du willst also direkt mit der Nase in die Lösung reingetunkt werden?

Dann schau mal in das Example-Verzeichnis Deiner Compilerinstallation, 
jedes Main enthält dort die sogenannte Main-Loop.

Bzw. schau überhaupt mal in ein C-Grundlagenbuch oder Tutorial.


Peter

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lothar Miller
>int my_strlen(char* str)
>{
>  int cnt;
>  if(!str) return 0;
>  for(i=0; *str; str++, i++);
>  return i;
>}
Das haut wohl nicht hin! (cnt, i)

Und wieso so kompliziert?
int my_strlen(char* str)
{
  int cnt=0;
  while(*str++) cnt++;
  return cnt;
}

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int my_strlen(char* str) {
  char *start = str;
  while (*str++);
  return str - start - 1;
}

Macht die Schleife sogar noch schneller.

Carsten:
>Die Funktionen und Subs von Basic sind von hunderten Progs.
>optimiert wurden. Wenn Du der Meinung bist es besser zu können,
>dann mach so weiter!

Guck dir erst mal die von C an... die werden sogar von vielen Leuten 
unabhängig voneinander optimiert und geprüft. Basic hat seine 
Berechtigung, aber deine Argumente ziehen nicht... offenbar haste selbst 
noch nicht den Unterschied zu C begriffen.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nicht das es mal auf unicode umgestellt werden soll.

int my_strlen(char* str) {
  char *start = str;
  while ( *str+=sizeof(char) );
  return str - start - 1;
}

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry vergesst den letzen beitrag, so könnte es aber sicherer sein.


int my_strlen(char* str) {
  char *start = str;
  while (*str++);
  return (str - start - 1) / sizeof( char );
}

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Carsten wrote:

> Die Funktionen und Subs von Basic sind von hunderten Progs.
> optimiert wurden.

Ja, da kann C wohl nicht mithalten, die Bibliotheken werden dort nur von 
über 100.000-en Profis optimiert.


> Wenn Du der Meinung bist es besser zu können,
> dann mach so weiter!

Wenn ich mal den Debounce-Befehl von Bascom nehme, dann kann ich das 
wesentlich effizienter mit meiner Routine machen.


Viele der in Bascom integrierten Funktionen helfen zwar die ersten 
Schritte zu machen, hindern einen aber, sobald das Programm etwas 
komplexer wird.
Z.B. wenn eine Funktion einen Timer belegt, kann man diesen nicht mehr 
für andere Sachen benutzen.
Programmiert man den Timer dagegen selber, kann ein Timer z.B. PWM, 
Input Capture, Display-Multiplex, Tastenentprellen und RTC zusammen 
machen ohne Probleme.


Peter

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... dann tragt alles zusammen und macht ein richtig
    gutes Basic ...


Carsten :)

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zudem ist C auch schöner anzusehen und man hat weniger Probleme ein 
Programm zu portieren wenn man mal auf eine andere Architektur umsteigt 
(PIC, ARM, PPC...)

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Peter

hab ich zu spät gelesen:

>int my_strlen(char* str) {
>  char *start = str;
>  while ( *str+=sizeof(char) );
>  return str - start - 1;

was ist denn wenn " " in der Mitte sitzt?

Findest Du das opt. gelöst?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch ganz gut zur Schnelleinführung und zum Nachschlagen;
http://openbook.galileocomputing.de/c_von_a_bis_z/

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Zudem ist C auch schöner anzusehen und man hat weniger Probleme ein
>Programm zu portieren wenn man mal auf eine andere Architektur umsteigt
>(PIC, ARM, PPC...)

na genau von AVR zu Quatcore 8086!

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quatcore 8086! => Du meinst wohl QuadCore
Und zudem sagte ich auch ARM und PPC nur als beispiel, nix von x86 und 
selbst wenn ist auch da Bascom nicht zu Hause.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter wrote:
> int my_strlen(char* str) {
>   char *start = str;
>   while (*str++);
>   return (str - start - 1) / sizeof( char );
> }
Bringt uns nicht weiter, da char auch bei Unicode immer noch ein Byte 
lang ist. Außerden würde ich persönlich kein Unicode im Code benutzen, 
sondern lieber Breitzeichen, das hängt mit der Thematik zusammen:
Für Breitzeichen:
int my_strlen(wchar_t* str) {
  wchar_t *start = str;
  while (*str++);
  return (str - start) - 1;
}
Klappt 100%. Und für ASCII tuts das mit char stat wchar_t auch 100%. 
Problem bei Unicode ist, dass man in der Schleife für jedes Zeichen 
prüfen müsste, obs denn nun Multibyte ist (und dann natürlich die 
folgenden Bytes überspringen) oder halt nicht. Mit Breitzeichen umgeht 
man das elegant.

Carsten:
>>int my_strlen(char* str) {
>>  char *start = str;
>>  while ( *str+=sizeof(char) );
>>  return str - start - 1;
Erstmal: Der Code ist falsch. Ganz einfach deshalb, weil in der Schleife 
"1" (sizeof(char)) zu *str addiert wird und dann das Ergebnis davon 
überprüft wird. Siehe oben; Unicode löst man eleganter.

>was ist denn wenn " " in der Mitte sitzt?
Dann ist das total egal. C-Strings hören mit nem Nullbyte auf.

Findest Du das opt. gelöst?
Der Code da war falsch, ansonsten löst dein BASIC das auch nicht anders.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(t->d) sorry

Aber C++ ist auch auf einem ARM nicht zu Hause!
Oder geht jetzt schon Objektprog. auf einem ARM?

:) Carsten

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum sollte C++ nicht auf dem ARM gehen? IMHO stellt das kein Problem 
dar.

Autor: Reuben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
www.cppreference.com

Aber Achtung - Seite auf Englisch :)
und nochmal Achtung - Es handelt sich um C++, welches bekanntlich nicht 
unterstützt wird von uC.

Grüße

Reuben

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gegenfrage

>Warum sollte C++ nicht auf dem ARM gehen? IMHO stellt das kein Problem
>dar.

Warum sollte Basic nicht gehen?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Carsten wrote:
> Gegenfrage
>
>>Warum sollte C++ nicht auf dem ARM gehen? IMHO stellt das kein Problem
>>dar.
>
> Warum sollte Basic nicht gehen?

Hast du schonmal ein Betriebssystem, also so ein richtiges wie MacOS, 
Linux oder Windows in Basic programmiert gesehen? Frag dich mal warum. 
BASIC geht auf nem ARM, logo, musst halt nur nen Compiler dafür finden.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>also so ein richtiges wie MacOS

Glaubenskrieg? :)

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hast du schonmal ein Betriebssystem, also so ein richtiges wie MacOS,
>Linux oder Windows in Basic programmiert gesehen?

bist Du da sicher, dass alle diese OS, als C als Quelle vorliegen?

lautes Lach, Lach, Lach, Lach, Lach

>in Basic programmiert gesehen

Nein

"ich prog. immer erst die Henne damit Sie ein Ei legt."

Gegenfrage:

hast Du ein OS gesehen was in C geschrieben wurde?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>hast Du ein OS gesehen was in C geschrieben wurde?

Manche sind der Meinung, Unix sei kein OS (oder war es Windows)?

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> hast Du ein OS gesehen was in C geschrieben wurde?

Linux, BSD und damit auch MacOS? Keine Ahnung in was Win geschrieben 
wurde, ist mir aber auch sehr egal :D

Setz doch selber einfach Bascom ein wenns dir gefällt, ich persönlich 
würds mir selber schon allein wegen der grauenhaften Syntax von Basic 
ganz sicher nicht antun aber denke das ist jedem selber überlassen...

Und zum flollis Frage: Mit ner while oder ner for-Schleife, aber mach am 
besten mal ein C-Tutorial durch damit du die Grundlagen kannst. goto 
verwendet eigentlich kein C-Programmierer der noch halbwegs bei Verstand 
ist würde ich sagen, ist in der Sprache auch irgendwie etwas fehl am 
Platz weshalb es normal vermieden wird.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und zum flollis Frage: Mit ner while oder ner for-Schleife,

.. Du bist ein "GROßER" Anhänger des Basic Dialektes

  For  Vari = anfang To ende Step -.5
    `das tut weh, wenn man in C sowas nicht formulieren kann (autsch)
    Exit For
  Next  Vari

  jetzt komm  mir bitte nicht mit, den unlogischen "==" in C

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>das tut weh, wenn man in C sowas nicht formulieren kann (autsch)

for(int i = anfang; i>ende; i-=5)
   break;

^^

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und Step -.5 ?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
for(double i = anfang; i>ende; i-=.5)
   break;

^^

Zufrieden?

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein

wo ist denn das Ende der Scheife?

sag jetzt nicht das, es ein nichts sagendes ";" ist!

Ich liebe Basic.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kauf dir ein C Buch oder les dir etwas dazu im Internet durch.

Das "Ende" der Schleife gibt es hier nicht. "break" wird bei jedem 
Schleifendurchlauf ausgeführt (oder auch nicht. Was soll das für einen 
Sinn machen?).
for(double i = anfang; i>ende; i-=.5)
   break;

Wenn du mehr als einen Befehl ausführen willst, musst du einen neuen 
Block öffnen:
for(double i = anfang; i>ende; i-=.5)
{
    Blabla();
    Function();
    foo();
}

Basic ist hier um einiges schlimmer, meiner Meinung nach.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Carsten wrote:
> Nein
>
> wo ist denn das Ende der Scheife?
>
> sag jetzt nicht das, es ein nichts sagendes ";" ist!
>
> Ich liebe Basic.

C ist eindeutig definiert:
for (Start; Laufbedingung; Schritt) Anweisung

"Anweisung" kann "Blabla();" sein, oder ein ganzer Block "{...}". 
Einduetig definiert, wie gesagt.

Im Übrigen habe ich dein Getrolle mal gemeldet.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. genau das meine ich

    "abartig"

  Schleifen-Ende ist ein "}"

}
 }
  }
}

               }
                                    []
}

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Sven Pauli

wenn eine Meinung nicht passt, wird er gemeldet.

hochachtungsvoll
der Blockwart

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö, gemeldet wird, wenn jemand sinnlose Beiträge bringt, die außer 
Provokation keinen Zweck erfüllen. Wegen mir kannst du dein Basic mit 
ins Grab nehmen. Aber dann nerv nicht andere mit irgendwelchem 
Halbwissen deinerseits.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber dann nerv nicht andere mit irgendwelchem
>Aber dann nerv nicht andere mit irgendwelchem
>Halbwissen deinerseits deinerseits

Wenn Du 30 Jahre nachweisen könntest!

rechne mal ein 1/4 vom Halbwissen * 3/8
da muß der Taschenrechner ran.

Motzer!

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Carsten, beschäftige dich zumindest mal mit den simpelsten C-Grundlagen. 
Es kommt nämlich sehr lächerlich rüber, wenn jemand an was anderem 
rummosert von dem er keine Ahnung hat. Vor allem hat Basic in dem Thread 
hier nichts zu suchen.
Wenn du dich mal mit mehr als Basic beschäftigen würdest wirst du 
schnell rausfinden, dass C wesentlich mehr kann aber evtl. für Anfänger 
nicht so schnell verständlich ist wie Basic, allerdings viel praktischer 
ist wenn mans mal kann, da es sowas wie ne einheitliche Syntax hat und 
keine unnützen Grenzen setzt.
Da hilfts auch nichts wenn du == für "unlogisch" erklärst, mag für dich 
so erscheinen aber ist in Wirklichkeit wesentlich logischer und hat 
einige Vorteile. Wüsstest du aber wenn du nen bisschen Ahnung von den 
Sachen hättest über die du dich hier beschwerst.
Also sei so nett und hör auf den Thread hier zuzumüllen...

P. S.: Warum zum Himmel sollte ich ein Anhänger von Basic sein? Fehlt 
nur noch, dass ich von dir zum begeisterten Windows-Nutzer ernannt werde 
oder so... Oo

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab Carsten mal ne Seite gewidmet:
http://www.mikrocontroller.net/articles/Benutzer:H...

Ansonsten empfehle ich für den Einstieg in AVR-C:
- Schmitt - Mikrocomputertechnik mit Controllern der Atmel 
AVR-RISC-Familie (Oldenbourg)

Autor: Engelchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr werdet doch nicht schon aufhören wollen?
Auf Jungs, weitermachen...

Autor: Anselm 68 (anselm68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, C würde mich wirklich auch brennend interessieren...
So als stümperhafter Basic-Programmierer ;)

Ne wirklich, grosse Familie, 8h Arbeit und Techniker-Abendschule, wo 
soll ich die Zeit hernehmen auchnoch C zu lernen.
So bastel ich eben mit Bascom herum bis es geht (früher Pascal und 
qBasic programmiert als Hobby)

Aber wenn mir jemand ein wirklich gutes C-Tut anbieten kann, welches 
mich nicht gleich 4h kostet bis ich die ersten 5 Zeilen verstanden habe, 
wäre ich auch zufrieden :)

Anselm

p.S.:Optimaler Weise ein direkter Vergleich der auch noch gut 
kommentiert ist
Basic-Programm -> Umsetzung in C
Mit vergleichen und "learning by doing" gehts wohl am einfachsten

Autor: Engelchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von Elektor habe ich noch ein Buch "Von Basic nach C umsteigen"
von 1991. Mit 5 1/4 Diskette.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anselm 68 wrote:
> p.S.:Optimaler Weise ein direkter Vergleich der auch noch gut
> kommentiert ist
> Basic-Programm -> Umsetzung in C
> Mit vergleichen und "learning by doing" gehts wohl am einfachsten

Eine andere Programmiersprache ist nicht nur eine andere Syntax.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven Pauli wrote:

> Klappt 100%. Und für ASCII tuts das mit char stat wchar_t auch 100%.
> Problem bei Unicode ist, dass man in der Schleife für jedes Zeichen
> prüfen müsste, obs denn nun Multibyte ist (und dann natürlich die
> folgenden Bytes überspringen) oder halt nicht. Mit Breitzeichen umgeht
> man das elegant.

Was soll denn ein "Breitzeichen" sein? Wenn du damit UTF-16 machen 
willst: Pech gehabt, da musst du die surrogate pairs beruecksichtigen.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Stegemann wrote:
> Sven Pauli wrote:
>
>> Klappt 100%. Und für ASCII tuts das mit char stat wchar_t auch 100%.
>> Problem bei Unicode ist, dass man in der Schleife für jedes Zeichen
>> prüfen müsste, obs denn nun Multibyte ist (und dann natürlich die
>> folgenden Bytes überspringen) oder halt nicht. Mit Breitzeichen umgeht
>> man das elegant.
>
> Was soll denn ein "Breitzeichen" sein? Wenn du damit UTF-16 machen
> willst: Pech gehabt, da musst du die surrogate pairs beruecksichtigen.

Schwachsinn is das. UTF8 wird byteweise eingelesen, wobei ein Byte halt 
nicht zwangsläufig einem Zeichen entspricht, es könnte nämlich ne 
Multibyte-Sequenz sein. Logischerweise ist das technisch Blödsinn, im 
Programm wirklich direkt UTF8, sprich Multibyte zu verarbeiten, weils 
die Leistung drastisch runterdrückt, wegen der ganzen Tests, die für 
jedes nochso einsamen "str++" nötig sind.

Breitzeichen ist das, was der C-Standard vor zehn Jahren festgelegt hat: 
wchar_t, ein 32bit breiter Integer. Beim Einlesen von Textdaten werden 
diese automatisch in Breitzeichen konvertiert. Ein Breitzeichen (sprich: 
ein wchar_t) nimmt in jedem Fall genau ein Zeichen auf, ob das 
ursprünglich aus UTF8, UTF16 oder ASCII stammt, ist wurscht. Nach der 
Verarbeitung kann der wchar_t-String dann wieder in ein gewünschtes 
Format zurückgewandelt werden (und wird dadurch sicherlich wieder 
kleiner, da viele Zeichen wieder durch ein Byte dargestellt werden).

http://www.gnu.org/software/libc/manual/html_node/...

Die C-Bibliothek bietet dazu natürlich sämtliche String- und 
Zeichenfunktionen einmal für ASCII (strlen...) und einmal für 
Breitzeichen an (wcslen). Beim Lesen und Schreiben gilt gleiches 
(fgets... und fwgets..., bei letzterem werden mögliche Umschaltungen 
beim Multibyte-Kram automatisch berücksichtigt).

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vieleicht solltest du mal deinen eigenen Link lesen, statt dich mit 
schraegen Uebersetzungen ("Breitzeichen") zu beschaeftigen:

"Some Unix systems define wchar_t as a 16-bit type and thereby follow 
Unicode very strictly. This definition is perfectly fine with the 
standard, but it also means that to represent all characters from 
Unicode and ISO 10646 one has to use UTF-16 surrogate characters, which 
is in fact a multi-wide-character encoding. But resorting to 
multi-wide-character encoding contradicts the purpose of the wchar_t 
type."

Kurz: Neuer Standard, neues Chaos, keine echte Loesung...

Autor: dsgfsdfgsdfg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab mir mal die mühe gemacht und n projekt
sowohl in bascom als auch in c geschrieben.
gut, c ist nicht meine "muttersprache" aber ich wollt
halt mal sehn von wegen ausführungsgeschwindigkeit
größe der hex usw.

unterm strich herausgekommen ist folgendes,
die ausführungsgeschwindigkeit war annähernd gleich,
tendentiell bascom etwas langsamer, aber für die anwendung
reichte es noch gut aus.
Codegröße war auch ähnlich (printf hat da aber auch viel
dazu beigetragen) sonst währ c vermutlich etwas kleiner
gewesen.

nur mit der c-syntax bin ich nicht so recht warm geworden.
mitunter wirds bei c schon etwas kryptisch mit den >> << usw.

funktioniert haben beide sprachen und auch die compiler
und ob man nun

if a=b then

else

endif

oder
if (a=b){

} else {

}

schreibt schenkt sich meiner meinung nach nix.
wenn einer nicht strukturiert programmiert wirds in
beiden sprachen müll und wenn einer sein handwerk versteht
kann er in beiden sprachen viel realisieren.

also vertragt euch gefälligst

Autor: dsgfsdfgsdfg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
huch ... jetzt hab ich noch nen fehler in der syntax :o)

if (a==b){

} else {

}

so sollts nun gehn

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Stegemann wrote:
> Vieleicht solltest du mal deinen eigenen Link lesen, statt dich mit
> schraegen Uebersetzungen ("Breitzeichen") zu beschaeftigen:

Den Link habe ich gelesen, nicht zum ersten Mal. "Breitzeichen" ist die 
gängige Übersetzung (gefunden in "O'Reilly - Programmieren in C"). Und 
wchar_t zu benutzen ist das Mittel der Wahl um UTF&Co mit Standard-C zu 
erschlagen. Der Standard besagt:
>It only requires that this type is capable of storing all elements
>of the basic character set.
Damit ist die Sache eindeutig. Ob und warum das jetzt irgendein Unix 
anders sieht, ist mir jetzt grad wurscht.

Dass einige Unixe das wchar_t noch mit 16 Bit definieren, liegt dadran, 
dass es noch garnich so lange mehr als 65 Tausend Zeichen in Unicode 
gibt. Die QT-Bibliothek hat übrigens bis vor garnicht langer Zeit ihre 
Zeichen auch 16bit-breit behandelt und erst auf 32bit umgestellt, als 
wirklich mehr als 65 Tausend Zeichen in Unicode kodiert waren.

Sollte ich aus irgendwelchen Gründen mal so furchtbar portabel schreiben 
wollen, kann ich mir immer noch eine freie UTF-Bibliothek suchen, die 
32bit-breite Breitzeichen macht, um damit genauso zu verfahren, wie der 
C-Standard es mit den eigenen wchar_t's vorgesehen hat.

Falls dir das immer noch nicht hilft, ich hab mich persönlich hieran 
gehalten:
http://www.cl.cam.ac.uk/~mgk25/unicode.html

Autor: Engelchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if (a==b)
{
  Falltüröffnen();
}
else
{
  Mikrocontroller_net_löschen();
}

so sollts nun gehn

Autor: steffenmaq (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das dürfte Dich interessieren:

Eine Webseite, die anfangs mit absoluten Einsteigerniveau und einem für 
den Mikrocontrollereinstieg geschrumpften C-Kurs beginnt und dabei 
konsequent mit kostenloser Software arbeitet, ist:

http://www.mikrocontrollerspielwiese.de

Hier gibts für alle Experimente und Projekte den C-Code und
die Eagle-Dateien gleich zum Runterladen und den wohl am einfachsten 
Programmieradapter zum nachbauen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.