#include void dual_addiere_eins(const char *input, char *output, int maxlen) { int len = strlen(input); int carry = 1; int i, j; // Das Ergebnis wird rückwärts in ein temporäres Array geschrieben char temp[maxlen]; temp[maxlen-1] = '\0'; // String-Ende for (i = len - 1, j = maxlen - 2; i >= 0 && j >= 0; --i, --j) { if (input[i] == '1') { temp[j] = carry ? '0' : '1'; if (carry) carry = 1; // bleibt 1 } else if (input[i] == '0') { temp[j] = carry ? '1' : '0'; carry = 0; } else { output[0] = '\0'; // Fehlerfall return; } } // Falls noch Übertrag übrig ist if (carry && j >= 0) { temp[j--] = '1'; } // Rest auffüllen while (j >= 0) temp[j--] = '0'; // Jetzt führende Nullen entfernen int start = 0; while (temp[start] == '0' && temp[start+1] != '\0') ++start; strcpy(output, temp + start); }