C String Problem

snoophallo

Erfahrenes Mitglied
Hallo ich habe ein kleines Problem, kann mir dabei vieleicht jemand behilflich sein?
Es dreht sich um folgendes:

Ich lese aus einer externen Textdatei 3 Zahlen ein. Bsp: 1, 2, 3
Dises werden mit
Code:
zahl[zahler]=ch
dem String zahl zugewiesen.
Wie kann ich diese Zahlen die jetzt in dem String stehen in eine normale hintereinander stehende Zahl verwandeln. Also in 123 die in der variablen test steht und in keinem String?

Kann mir da jemand weiterhelfen?
 
moin


Mach einfach
Code:
zahl[zahler]=(int)ch - 48;
Das sollte reichen, wenn nicht, gib mal ein bsichen mehr Informationen oder zeig deinen Code.


mfg
umbrasaxum
 
ch=fget(stream);
while(!feof(stream)
{
ch=fget(stream);
while(ch != '.')
{
zahler++;
zahl[zahler]=ch;
zahl2 = //und jetzt sollen die Zahlen die in den String zahl geschrieben wurden als eine einfache Zahl z.B. 123 in die Variable zahl2 geschrieben werden. Zahl2 ist kein String nur zahl
}
}
 
moin


Ok jetzt macht endlich (ein wenig) Sinn.
Ich würde es aber anders machen:
Code:
char ch;
int zahler=0;
char zahl[10]; 
int zahl2;

.......


ch=fget(stream);
while(!feof(stream))
{
    ch=fget(stream);
    while(ch != '.')
    {
        zahl[zahler++]=ch;
        zahl[zahler]=0;          //Wichtig!
        zahl2 = atoi(zahl);
    }
}


mfg
umbrasaxum
 
Hi.

Aber so richtig Sinn macht der Code immer noch nicht. Produziert im schlimmsten Fall eine Endlosschleife würde ich glatt behaupten. Außerdem wird das erste Zeichen immer überlesen. (Woher kommt eigentlich die Funktion "fget" - ist mir bisher noch nicht untergekommen?!)

Mein Vorschlag:
Code:
char ch;
int zahler=0;
char zahl[10]; 
int zahl2;

.......

while(( ch = fgetc (stream) ) != EOF)
{
    if (ch != '.')
    {
        zahl[zahler]=ch;
    } else {
        zahl[zahler]=0;          //Wichtig!
        zahl2 = atoi(zahl);
        break;
    }
    zahler++;
}
 
moin


Und so richtig macht er immernoch keinen Sinn.
Code:
zahl2 = atoi(zahl);
Macht in der Schleife so nicht wirklich Sinn, nach der while-Schleife würde es mehr Sinn machen.


mfg
umbrasaxum
 
Zurück