mikrocontroller.net

Forum: Compiler & IDEs Array aus chars in C


Autor: Basti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi alle.

ich habe folgenden C code:

char s[]="Hallo Welt!";

der funktioniert

dieser hier funktioniert auch:

char s[20]="Hallo Welt!";


warum geht dieser hier nicht?

char s[20];
s="Hallo Welt!"

Autor: 1.8T-Passat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Basti schrieb:
> s="Hallo Welt!"

Da fehlt ein ;

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weil "s" die Adresse des ersten Elements des Arrays ist.

Autor: 1.8T-Passat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und außerdem muss man bei sowas glaub ich String-Funktionen nutzen. Guck 
mal nach strcpy.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Basti schrieb:
> hi alle.
>
> ich habe folgenden C code:
>
> char s[]="Hallo Welt!";
>
> der funktioniert

Ja, das ist eine Initialisierung.

> dieser hier funktioniert auch:
>
> char s[20]="Hallo Welt!";

Auch das ist eine Initialisierung.

> warum geht dieser hier nicht?
>
> char s[20];
> s="Hallo Welt!"

Das ist eine Zuweisung. C kennt keine Array-Zuweisungen.

Autor: Basti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem ; war mir klar, das hab ich beim copy&paste vergessen.

Okay. dann geht das also nicht. gibt es eine funktion, dem Array im 
nachhinein einen String zuzuweisen, oder muss ich die Selber bauen?

Autor: Ch D. (chrisu) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.8T-Passat schrieb:
> Und außerdem muss man bei sowas glaub ich String-Funktionen nutzen. Guck
> mal nach strcpy.

Autor: strcpy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.8T-Passat schrieb:
> Und außerdem muss man bei sowas glaub ich String-Funktionen nutzen. Guck
> mal nach strcpy.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>gibt es eine funktion, dem Array im
>nachhinein einen String zuzuweisen, oder muss ich die Selber bauen?

In der Zeit in der du diese Frage geschrieben hast, hättest du schon die 
halbe Funktion selbst geschrieben.

einfach in einer Schleife Zeichen für Zeichen kopieren.

Autor: Basti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay danke,

ich werde dann keine weiteren Anfängerfragen stellen und wenn ich auf 
ein Problem stoße in Assembler weitermachen, und euch dann auch 
dummdumm-Antworten geben :-)

Autor: Basti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe im übrigen nun auch andere Leute, die sagen, dass 
"C-Kenner" immer eingebildet rüber kommen.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist das Problem, du hast doch eine konkrete Antwort auf deine Frage 
bekommen:
strcpy

Wenn du weitere Detailfragen dazu hast, dann stelle sie.

Autor: c-kenner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... nun mal langsam! Ich erkenne in keiner Antwort eine Unhöflichkeit 
gegenüber dir! Du hast gleich in den ersten Antworten den entscheidenen 
Tipp bekommen (ausser der mit dem ";", der aber der Korrektheit wegen, 
auch schon berechtigt war).

Wo ist dein Problem mit uns?

Autor: Andreas Schweigstill (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Problem besteht darin, dass Basti das aufgegriffene Vorurteil 
unbedingt
bestätigt sehen wollte.

Gruß
Andreas Schweigstill

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Basti schrieb:
> Ich verstehe im übrigen nun auch andere Leute, die sagen, dass
> "C-Kenner" immer eingebildet rüber kommen.

Ich verstehe das C-Kenner anscheinend eingebildet rüberkommen, wenn die 
Fragen Themen betreffen, die in jedem, aber wirklich jedem, 
C-Anfängerbuch behandelt werden. Und zwar im Kapitel 5 von 20.

Wie, du hast keine Literatur?
Jetzt weißt du, warum C-Kenner bei manchen Fragen patzig werden.

Autor: Andreas Schweigstill (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Ich verstehe das C-Kenner anscheinend eingebildet rüberkommen, wenn die
> Fragen Themen betreffen, die in jedem, aber wirklich jedem,
> C-Anfängerbuch behandelt werden. Und zwar im Kapitel 5 von 20.

Und vermutlich sind diese Anfänger, die dann auch im Berufsleben ihre
sog. Teamfähigkeit dadurch zur Schau stellen, dass sie ihre Kollegen
mit derart banalen Fragen nerven, auch diejenigen, die sich hier in
anderen Diskussionsfäden am lautesten darüber beklagen, dass sie
keine hochbezahlte Festanstellung bekommen.

Ich kann es einfach nicht verstehen, wieso manche Leute nicht das nötige
Schamgefühl besitzen, banale Fragestellungen zunächst durch eigene
Recherchen zu lösen. Ich gebe ja durchaus zu, dass es typische Anfänger-
fragen gibt, die in keinem Lehrbuch wirklich schlüssig beantwortet
werden. Das Initialisieren/Kopieren von Strings bzw. Arrays in C gehört
aber definitiv nicht zu dieser Kategorie. Dass C keine "echten" String-
Datentypen besitzt, steht ja nun wirklich in jedem Buch schon fast im
Vorwort, ebenso der Hinweis, dass viele elementare Operationen kein
Bestandteil des Sprachumfanges, sondern der Standardbibliothek(en)
ist/sind.

Gruß
Andreas Schweigstill

Autor: mmhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn den Profis die Frage zu einfach ist, dann ruhig mal die F... 
halten. Warum sollen so simple Fragestellungen nicht behandelt werden? 
Steht dazu was in den Nutzungsbedingungen? Ist doch ein öffentliches 
Forum, oder?

kopfschüttel, kopfschüttel

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@mmhh: Hast recht! Ich finde auch, es sollten alle Bücher und Tutorials 
verbrannt und gelöscht werden! Wozu gibts denn schließlich Foren!

Achja, und die Suchfunktion gehört auch abgeschafft, schließlich kann 
man ja auch Standardfragen immer wieder neu stellen!

Autor: mmhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus schrieb:
> Wozu gibts denn schließlich Foren!

nicht so gemeint, aber genau das ist der Punkt!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bis zur ersten Hälfte dieses Postings
Beitrag "Re: Array aus chars in C"
war noch alles in Ordnung.

Dass hier
char s[20];
s="Hallo Welt!"

eine Array-Zuweisung notwendig wäre, ist für einen Neuling nicht so 
offensichtlich. Vor allen Dingen dann nicht, wenn er hier

char s[20]="Hallo Welt!";

doch anscheinend dieselbe Operation machen kann.

Noch hat er nicht verinnerlicht, dass Zuweisung und Iniitalisierung 2 
verschiedene Paar Schuhe sind.

Aber, das hier
> Okay. dann geht das also nicht. gibt es eine funktion, dem
> Array im nachhinein einen String zuzuweisen, oder muss ich
> die Selber bauen?

ist im Grunde eine indiskutable Frage, die einfach nur dokumentiert, das 
der Fragesteller noch nie in ein C-Buch hineingeschaut hat.
Und dafür hab ich ehrlich gesagt immer weniger Verständnis.

Das mindeste, was ein Lernender tun kann ist, sich ein Tutorial zu 
goggeln. Und so schlecht kann ein C-Tutorial gar nicht sein, dass es 
nicht einen Abschnitt über Stringverarbeitung enthält.

D.h. der Fragesteller hat sich überhaupt noch nie irgenwas zum Thema 
"Lernen in Eigenregie" überlegt. Noch nicht mal die simpelsten Dinge.
Wie gesagt: Die Unterscheidung Initialisierung-Zuweisung sehe ich ihm 
nach. Das ist eine berechtigte Frage und es ist eine gúte Frage. Aber 
die 2te Frage ist unter jeder Kritik.

IMHO

(Manchmal frage ich mich schon, wie unsere Vorfahren es jemals von den 
Bäumen herunter geschafft haben, ohne vorher in einem Forum nachgefragt 
zu haben wie das geht)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> (Manchmal frage ich mich schon, wie unsere Vorfahren es jemals von den
> Bäumen herunter geschafft haben, ohne vorher in einem Forum nachgefragt
> zu haben wie das geht)

Das würde eine nette Sig abgeben ;-)

Autor: mmhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Und dafür hab ich ehrlich gesagt immer weniger Verständnis.

Danke für die sachliche Kommentierung. Deine Einstellung ist 
nachvollziehbar. Für dich wäre ein reiner Expertenbereich im Forum 
sicherlich besser. Aber bleibe auch den Anfängern erhalten und wenn es 
zu plump ist ... tief durchatmen.

imho
es sind nicht alle von den Bäumen gekommen ;)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mmhh schrieb:
> Karl heinz Buchegger schrieb:
>> Und dafür hab ich ehrlich gesagt immer weniger Verständnis.
>
> Danke für die sachliche Kommentierung. Deine Einstellung ist
> nachvollziehbar. Für dich wäre ein reiner Expertenbereich im Forum
> sicherlich besser. Aber bleibe auch den Anfängern erhalten und wenn es
> zu plump ist ... tief durchatmen.

Keine Sorge.

Aber ich glaube du hast es immer noch nicht verstanden, was der 
Kernpunkt der ganzen Sache ist.

Was würdest du in einem Autoforum zu jemandem sagen, der anhebt dass er 
seinen Motor friesieren möchte, und 5 Postings weiter nachfrägt "Wie rum 
hält man eigentlich einen Schraubendreher?"

Bei dieser Frage geht es nicht um 'Experten'. Es geht um absolute 
Grundlagen. Es geht darum, dass heutzutage anscheinend immer weniger 
bereit sind, ein Buch zur Hand zu nehmen. Ein normales, 
durchschnittliches C-Buch hat so um die 150 Seiten. Erwartest du im 
Ernst, dass du dir das Wissen, welches auf diesen 150 Seiten vermittelt 
wird, durch zufälliges Nachfragen in einem Forum aneigenen kannst? Wir 
sehen gerade hier im Forum immer wieder diese vermeintliche "Rück rüber 
mit der Info, Alter"-Generation, die auf ewig aus ihrem 
Halbwissen-Stadium nicht herauskommen wird, weil sie die Grundlagen 
nicht in einer systematischen Art und Weise vermittelnt bekommen hat, 
sondern immer nur das bischen nachfrägt, was sie zur Zeit gerade 
benötigen. Und dann auch nur gerade so viel, dass irgendwie weiter 
programmiert werden kann, denn verstanden hat man von der Erklärung so 
gut wie nichts, weil die dazu notwendigen Voraussetzungen schon nicht 
vorhanden waren.


Das auch mit einem Buch die eine oder andere Frage offen bleibt; das man 
mal etwas nicht auf Anhieb versteht ... das alles ist ok und dafür gibt 
es Foren um dort Fragen zu stellen. Glaub mir ich weiß wovon ich rede. 
Als ich angefangen habe, gab es keine Foren oder Online-Tutorials. Eine 
unklare Stelle in der Literatur bedeutete: Wieder und immer wieder 
lesen. Wer Glück hatte konnte in einer Vergleichsliteratur denselben 
Sachverhalt anders geschildert nachlesen. Aber Unklarheit bedeutete oft 
auch einfach nur: Stunde um Stunde damit zu verbringen, das gelesene 
einfach auszuprobieren bis man den Dreh raus hatte. Und dann noch 20 
Variationen davon um sicherzugehen, dass man den Sachverhalt auch 
wirklich verstanden hatte.

Da geb ich dir recht: Da ist ein Forum schon eine feine Sache. Aber 
Grundlage, um Programmieren bzw. eine Programmiersprache zu lernen, ist 
Literatur (oder ein sehr gutes Online-Tutorial). Ich bin jetzt fast 30 
Jahre im Geschäft. In dieser Zeit hab ich in mindestens 4 oder 5 
verschiedenen Programmiersprachen industriell programmiert (und noch ein 
paar mehr um mit ihnen zu spielen). Und als ich vor 3 Jahren eine Job in 
C# angeboten bekommen habe, was denkst du hab ich gemacht? Genau. Ich 
bin in eine Buchhandlung gegangen und habe die vorhandenen C# Bücher 
studiert und das gekauft, welches mir am meisten zugesagt hat und hab 
erst mal ein paar Abende damit verbracht mir einen Überblick zu 
verschaffen, wie man in C# arbeitet, wie die Library aufgebaut ist, wie 
typische Idiome in C# aussehen, etc. Im Job hat sich dann das Buch 
(wieder mal und erwartungsgemäss) als wahrer Schatz erwiesen, indem bei 
Unklarheiten dort nachgelesen werden konnte. Dadurch das ich das Buch in 
den (für mich) wesentlichen Teilen durchgearbeitet und den Rest 
überflogen habe, wusste ich auch, wo was steht und wo ich was finde.

Ich verdiene meine Brötchen mit Software entwickeln, so wie viele andere 
hier. Wenn wir uns nicht zu schade sind, Literatur zum Lernen zu 
benutzen, warum können dann Anfänger das nicht auch tun? Vor allen 
Dingen in C, wo es dann doch ein paar 'Spezialitäten' gibt, die man 
sonst so in keiner anderen Sprache findet.
Ist es wirklich zu viel verlangt, 20 oder 30 Euro für ein gedrucktes 
Buch auszugeben? Ich denke nicht. In einer Zeit, in der man so wichtige 
Dinge wie Klingeltöne einkauft und bereit ist, für einen Markenaufnäher 
auf einem Shirt das Doppelte zu bezahlen ohne mit der Wimper zu zucken, 
muss das drinnen sein.

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl heinz Buchegger:

Meine volle Zustimmung!

Was "sebstständiges Lernen" bedeutet, das sieht man am 
eindrucksvollsten, wenn man die Motorik-Entwicklung eines Säuglings 
beobachtet:

- Am Anfang kann das liebe Kind mit viel Aufwand und "Gewackel" kaum den 
Kopf heben, geschweige denn sich vom Rücken auf den Bauch drehen.
- Kaum 2 Jahre später (nach viel selbstständigem Üben und Trainieren) 
"flitzt" es seiner Mutter im Kaufhaus davon und amüsiert sich hinter dem 
Kleiderständer köstlich darüber, wie die Mutter nach ihm sucht.

Dieses Kind hat auch nicht im Alter von 2 Monaten in irgendeinem Forum 
nachgefragt, wie man denn nun am besten um eine Ecke rennt.

Bernhard

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist doch amüsant:

Fragesteller:
> [...] warum geht dieser hier nicht?
>
> char s[20];
> s="Hallo Welt!"

Antwortender 1:
> Und außerdem muss man bei sowas glaub ich String-Funktionen nutzen.
> Guck mal nach strcpy.

Antwortender 2:
> Und außerdem muss man bei sowas glaub ich String-Funktionen nutzen.
> Guck mal nach strcpy.

Antwortender 3:
> Und außerdem muss man bei sowas glaub ich String-Funktionen nutzen.
> Guck mal nach strcpy.

Antwortender 4:
> [...] einfach in einer Schleife Zeichen für Zeichen kopieren.

Fragesteller:
Boah sind C-Kenner eingebildet.

Autor: mmhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Aber ich glaube du hast es immer noch nicht verstanden, was der
> Kernpunkt der ganzen Sache ist.

Doch, doch, du willst die Leute erziehen. Ich sehe hier auch 
Nachholbedarf, aber das hier ist ein Technikforum. Laßt den Fragesteller 
doch austrocknen, wenn es euch zu dumm ist. An der Reaktion merkt ihr, 
dass eure Methode nicht fruchtet. Solche Threads sind hier schon oft 
gelaufen, und?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Doch, doch, du willst die Leute erziehen.

Wie es ja auch so schön hießt:
Gib einem Mann einen Fisch und er wird jeden Tag im Forum nach einem 
neuen Fisch fragen; lehre ihn zu fischen und er wird sich bald selbst 
über die ständigen Fragen nach Fischen ärgern.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte das war:

If you give a man fire, he has warm for a day. If you show him how to 
make fire, he will have warm every day. But if you set a man on fire, he 
will have warm for the rest of his life.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gib einem Mann einen Fisch und er ist satt für einen Tag.  Gib ihm eine 
Angel und er wird Dich anmaulen, was er denn zum Kuckuck mit so einer 
saublöden Schnur anfangen soll, wo er doch essen will.

Das ist die Forenversion.  Jedenfalls was C-Literatur anbelangt.

Autor: Andreas Schweigstill (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hc Zimmerer schrieb:
> Jedenfalls was C-Literatur anbelangt.

Und elektrotechnische Grundlagen. :-/

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.