brunlorenz
*C* & Windows-Freak
Mal etwas, was die Funktionalität bereitstellt (aber für eine Schulaufgabe nicht tauglich ist):
Das dürfte laufen
Falls es aber eine Aufgabe ist, bei der ihr selbst den Code verfassen müsst:
Das noch für den Fall, dass es eine Schulaufgabe war.
Falls du noch eine Erklärung für die Schule brauchst:
lorenzbrun
C:
#include <stdio.h>
#include <stdbool.h>
long int str_to_long(char in[])
{
long int zahl=0;
if(sscanf(in,"%ld",&zahl)==0) return -1; // oder den Fehlercode
else return zahl;
}
Falls es aber eine Aufgabe ist, bei der ihr selbst den Code verfassen müsst:
C:
long int str_to_long(char in[])
{
long int zahl=0;
int z;
bool minus=false;
for(z=0;z<strlen(in);z++)
{
if(in[0]=='-' && z==0) { minus=true; continue; }
if(isdigit(in[z])==0) return -1; // oder anderer Fehlercode
if((zahl+in[z]-'0')*pow(10,z)>LONG_MAX)) return -1;
zahl+=(in[z]-'0')*pow(10,z);
}
if(minus) zahl*=(-1);
return zahl;
}
Falls du noch eine Erklärung für die Schule brauchst:
Ich hoffe, das genügt dirJedes Zeichen des Strings durch eine for-Schleife laufen lassen.
Dabei prüfen, ob es sich um eine Zahl handelt.
Falls ja, dem Zeichen 48 abziehen, weil 48 im ASCII-Zeichensatz die 0 ist und das Ergebnis (also die Ziffer)
mit der jeweiligen Zehnerpotenz multiplizieren, dass die Zahl an der richtigen Stelle landet.
Falls ein Minuszeichen erkannt wurde, am Schluss noch die Zahl mit -1 multiplizieren.
lorenzbrun
Zuletzt bearbeitet: