Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
03.09.2001, 21:50
Psychodad



laut meinem C-Kurs sollte dieser code so wie er ist funktionieren - stattdessen kommt ne Fehlermeldung:
error C2059: Syntaxfehler : ','
Fehler beim Ausführen von cl.exe.

neu_test.obj - 1 Fehler, 0 Warnung(en)

Hier der code dazu:
/*
Beispiel, wie man auf Elemente zugreift
*/
#include <stdio.h>
void main ( void )
{

/* Das Feld mit 10 Elementen wird erzeugt */
int feld [ 10 ] = { 0,1,2,3,4,5,6,7,8,9 } ;
/* Variable vom Typ Integer wird erzeugt */
int var;

/* Ein Zeiger auf Integer-Werte wird erzeugt */
int *zeiger;

/* 'zeiger' zeigt auf das erste Element von 'feld' */
zeiger = &feld [ 0 ] ;
printf ("\n%d"*,zeiger);

/* var enthält den Wert von 'feld [ 0 ]' */
var = *zeiger;
printf ("\n%d",var);

/* var enthält den Wert von 'feld [ 2 ]' */
var = *( zeiger + 2 );
printf ("\n%d",var);

/* var enthält den Wert von 'feld [ 2 ]' */
var = feld [ 2 ] ;
printf ("\n%d",var);

}

Dann hab ich noch nen code, der funktioniert aber zusätzlich kommen hässliche zeichen
der code:
/*
Beispiel zum gezielten Feldzugriff
*/
#include <stdio.h>
void main ( void )
{

char a[3];
char *z;
/* Adresse von a[0] in z speichern */
z = &a[0];

/* Die Buchstaben in die Felder kopieren */
a[0] = 'a';
*(z+1) = 'b';
a[2] = 'c';

/* und ausgeben, damit wir sehen, ob es auch geht */
printf ("\nFeldinhalt : %s\n",a);
printf ("\nZeiger zeigt auf : %s\n",z);

}

und die Ausgabe dazu:
jeweils nach dem abc kommt: ein komisches ASCII-Zeichen,eine 8, ein Viiereck,und ein kleines e.

Kann mir da jemand helfen.
Hatte neulich schon zu Probs mit VisualC++ gepostet.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
03.09.2001, 21:53
Archangel



printf ("\n%d"*,zeiger);
ähhm... das muss heißen printf("\n%d", *zeiger);
also zuerst komma, dann der dereferenzierungsoperator

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche
002
03.09.2001, 22:47
TheTinySteini



Beim zweiten Programm:

Mach's mal so:
char a[4];
char *z;
/* Adresse von a[0] in z speichern */
z = &a[0];

/* Die Buchstaben in die Felder kopieren */
a[0] = 'a';
*(z+1) = 'b';
a[2] = 'c';
a[3] = 0; // diese zeile hier schließt den string ab

Dann müsste es gehen.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
003
04.09.2001, 16:58
Psychodad



Cool! Danke es funktionieren jetzt beide Progs ohne Probleme. Das ich bei dem ersten Prog das nicht selber gesehen hab! Schlimm schlimm!!!!!
Bei dem zweiten muss ich jetzt mal dahintersteigen.
Kannst du mir sagen, wo das Problem lag?

--

zum Seitenanfang zum Seitenende Profil || Suche
004
04.09.2001, 17:12
Archangel



naja, in c/c++ muss halt jeder string mit dem nullzeichen ('\0' oder 0) abgeschlossen werden, weil sonst das ende des strings nicht erkannt wird

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005


Dieser Beitrag wurde am 04.09.2001 um 17:13 von Archangel bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
04.09.2001, 18:33
Psychodad



So! Und jetzt das nächste Problem :-)
Also: Angeblich soll ddurch diesen Code:

#include <stdio.h>
#include <math.h>
void main ( void )
{

double n;
n = atof ( "2.4354" );
printf ("%lf" , n );

}

Ein String in ne Zahl umgewanfelt werden! Aber wo ist der String?!?
Ein String ist doch denk ich eine Zeichenkette. Kann man mit atof und atoi doch nur Zahlen in andere Typen bringen, also praktisch dasselbe wie casting?
Oder wieso wird in meinem Tut behauptet, dass man Buchstaben so in Zahlen umwandeln kann!?

--

zum Seitenanfang zum Seitenende Profil || Suche
006
04.09.2001, 19:02
TheTinySteini



Tjo, das ist schon richtig. Deine Zeichenkette ist "2.4354"! Sieht zwar aus wie ne Zahl, aber tatsächlich sind die einzelnen Ziffern als Zeichen abgespeichert, im Gegensatz zu z.B. nem Integer, da geht das mit 2er Potenzen (und den gibt man ja auch ohne die " an).
atof macht halt nun aus diesen Buchstaben die entsprechende 2er-Potenzfolge.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy


Dieser Beitrag wurde am 04.09.2001 um 19:03 von TheTinySteini bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
04.09.2001, 19:49
Psychodad



Aha. Alles klar. Aber Buchstaben kann ich da nicht einfach einsetzen - hab ich ja schon probiert. Bringt mir also atof und atoi nicht wirklich was tolles oder wie?

--

zum Seitenanfang zum Seitenende Profil || Suche
008
04.09.2001, 21:48
Kriz



*** DELETED ***

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 04.09.2001 um 21:50 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
05.09.2001, 18:25
Prefect



Umm. Ich denke wir sollten den Bezeichner atof mal auseinandernehmen. Die einzelnen Buchstaben haben nämlich (oh Wunder) durchaus Bedeutung:

a steht für ASCIIZ-String
to ist Englisch und heißt "zu"
f steht für float

Das ist also ne Funktion die einen String in einen Float umwandelt. Genau das tut die Funktion auch!
Dass du da keine Buchstaben reinsetzen kannst ist klar, denn "4HALLO5" ist ja keine Zahl, oder?

Natürlich ist die Anwendung, wie du sie geschrieben hast, ziemlich sinnlos; du hättest genausogut d = 2.4354 schreiben können. Aber stell dir mal vor, du parst eine Datei oder so und kommst zu einem Token token, was ein Float sein sollte. Also so in dem Stil:

Quellcode:
char token[100]; // fixed-size, schlechter stil *g*

FILE *f = fopen("dateiname", "r");

... hier wird die Datei gelesen; an irgendeiner Stelle wird etwas nach token eingelesen

double d = atof(token); // und schon hast du den String in eine Zahl umgewandelt..

...

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
010
05.09.2001, 19:46
Psychodad



Okay, das ist alles ganz klar und logisch. Aber warum überhaupt sollte ich Zahlen in einem String speichern und nicht als int (oder double oder...)?
Den einzigen nutzen könnte ich mir jetzt mit (noch) meiner begrenzten C-Erfahrung vorstellen, wenn man Zahlen aus ner Textdatei holen muß (z.B. ne word-datei oder sontewas). Ist das jetzt soweit richtig?
(hab mir den thread in dem es um dumme fragen ging durchgelesen - hoffe dass das hier keine solche dummen fragen sind!!)
Aber mal ein Danke an euch, die mir hier das klar machen wollen!

--

zum Seitenanfang zum Seitenende Profil || Suche