IBAN-Rechner Modulo Probleme



  • Hallo,

    ich bin hänge beim Entwickeln eines IBAN-Rechners etwas fest.
    Die Eingabe der BLZ und Kontonr. mit anschliesender Umwandlung in ein
    char array nIban[25] = BLZ + Iban + Ländercode funktioniert.
    Danach kommt die folgende berechnug der Prüfziffer.

    	char modulo[10];
    	strncpy(modulo, nIban, 9);
    	modulo[9] = '\0';
    
    	char *succ;
    
    	//Modulo Rechnung von der 24-Stelligen Zahl
    	int rest = strtol(modulo, &succ, 10);
    	rest = rest % 97;
    	sprintf(modulo,"%i",rest);
    
    	memcpy(modulo + 2, nIban + 9, 7);
    	rest = strtol(modulo, &succ, 10);
    	rest = rest % 97;
    	sprintf(modulo,"%i",rest);
    
    	memcpy(modulo + 2, nIban + 16, 7);
    	rest = strtol(modulo, &succ, 10);
    	rest = rest % 97;
    	sprintf(modulo,"%i",rest);
    
    	modulo[2] = '0';
    	modulo[3] = '\0';
    	rest = strtol(modulo, &succ, 10);
    	sprintf(modulo,"%i",rest);
    
    	//Pruefzifferberechnung
    	int pruefziffer = 98 - rest;
    

    Aber irgendwie wird die Prüfziffer immer negativ.
    Probiere mich schon seit Tagen an diesem Problem und komme nicht weiter.
    Habt ihr ne Idee oder nen Ansatz?



  • hast du das mal mit einem debugger durchlaufen bzw. die zwischenergebnisse ausgeben lassen?

    also ab zeile 1 kopierst du 9 stellen ab 0 ins array, wandelst das in einen long um und berechnest den ein- oder zweistelligen rest, den du dann wieder ins array schiebst.

    ab zeile 12 bzw. zeile 17 hängst du 7 weitere ziffern an das array ab stelle 2 an. frage: was passiert, wenn der rest nur einstellig ist?

    achja und probiers ma mit unsigned-variablen.



  • Falls in Zeile 19 ein zweistelliges Ergebnis herauskommt (... % 97 kann schließlich 0 bis 96 ergeben), wird das zweistellige Ergebnis in Zeile 20 nach modulo geschrieben, und in Zeile 22 und 23 dreistellig gemacht; naja und 98 - dreistellige Zahl ist halt negativ ...



  • Danke für eure Hilfe hab den Fehler jetzt behoben.
    Bin noch neu hier... muss ich den Thread jetzt löschen oder darf er bestehen bleiben?


  • Mod

    @ccoder94 sagte in IBAN-Rechner Modulo Probleme:

    Bin noch neu hier... muss ich den Thread jetzt löschen oder darf er bestehen bleiben?

    Bitte einfach gar nichts tun.



  • ccoder94
    Wenn du neu bist erstmal ein: Willkommen!

    Lass den Thread stehen und mach einfach nichts. Der Grund ist das andere aus deinen Fehlern lernen können und auch dein Code-Snippet benutzen können, um auch einen IBAN-Rechner zu bauen oder damit zu lernen.

    Das ist nun mal der Sinn eines Forums/Community, dass man Wissen austauschen kann 🙂 Wäre doch schade, wenn das nicht möglich ist 😉


Log in to reply