Was bedeutet das .c im memset



  • Hier wird's erklärt:

    http://www.proggen.org/doku.php?id=c:tutorial:struct

    Keine Ahnung, ob das Tutorial was kann, hab's nur überflogen. Aber für das erklären von struct wird es schon reichen. 😉 Wenn du ernsthaft C lernen willst, solltest du über die Anschaffung eines Buches nachdenken.



  • Ein Buch habe ich schon aber eventuell nicht das Beste. Es heißt C als erste Programmiersprache



  • Die Definition deines struct solltest du aber mitliefern, damit man dir dabei helfen kann.



  • Hier meine main:

    int main(void){
    
        struct int20 a= create20 ("12345678901234567890");
        struct int20 b= create20 ("100");
        struct int20 sum= add20 (a,b);
        print20 (a);
        printf("\n");
        print20(b);
        printf("\n");
        print20(sum);
        printf("\n");
    
        return 0;
    }
    


  • Die Definition des struct fehlt weiterhin.



  • Also hier ist der ganze Quelltest der .c Datei

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "int20.h"
    
      struct int20 create20 (char* val){
    
        int len;
        int i;
    
        struct int20 new_new;
    
        /* Laenge des Strings ermitteln */ 
        len=strlen(val);
        /* Struct mit Nullen fuellen */
        memset(new_new.c,'0',20); 
    
        /* String von rechts nach links speichern */
        for(i=0;i<=len;i++){
          new_new.c[i+20-len] = val[i];
        }
    
        return new_new;
      }
    
      struct int20 add20 (struct int20 a, struct int20 b){
    
        int i;
        int zwischensumme=0;
        int uebertrag=0;
    
        struct int20 newAdd;
        /* Struct mit Nullen fuellen */
        memset(newAdd.c,'0',20);
    
        for(i=0;i<=20;i++){
    
          /* Zwischensumme berechnen */
          zwischensumme=(a.c[19-i]-'0')+(b.c[19-i]-'0')+uebertrag;
          /* Falls berechnung ueber 9 wird */
          if(zwischensumme>9){
    	uebertrag=1;
    	/* Modulo mit Zwischensumme - mit '0' addieren um einen Charwert zu erhalten */
    	newAdd.c[19-i]=(zwischensumme%10)+'0';
    
          } else {
    	uebertrag=0;
    	/* Addition ohne Uebertrag */
    	newAdd.c[19-i]=zwischensumme+'0';
          }
    
        }
    
        return newAdd;
      }
    
      void print20 (struct int20 toPrint){
    
        int i;
        int istfuehrend= 1;
    
        for(i=0;i<=19;i++){
          /* Wenn es KEINE Null ist ODER es fuehrt keine Null */
          if((toPrint.c[i] != '0') || (istfuehrend==0) ){
    	printf("%c",toPrint.c[i]);
    	istfuehrend= 0;
          }
    
        }
        printf("\n");
    
      }
    
    int main(void){
    
      struct int20 a= create20 ("12345678901234567890");
      struct int20 b= create20 ("100");
      struct int20 sum= add20 (a,b);
      print20 (a);
      printf("\n");
      print20(b);
      printf("\n");
      print20(sum);
      printf("\n");
    
    return 0;
    }
    


  • _matze schrieb:

    Die Definition des struct fehlt weiterhin.



  • Tipp: die gesuchte Definition dürfte im Header int20.h stehen.



  • Also ich habe wenn nur noch die Header Datei. Aber in der steht die doch nicht, oder?

    struct int20 create20 (char* val);
    struct int20 add20 (struct int20 a, struct int20 b);
    void print20 (struct int20 toPrint);
    
    struct int20 {
        unsigned char c[20];
    };
    

    Mehr an Code habe ich nicht. Habe nur die int20.c und die int20.h
    Wenn ich die int20.c compiliere und Ausführe funktioniert alles wie es soll.



  • mattrock schrieb:

    struct int20 {
        unsigned char c[20];
    };
    

    Treffer und versenkt! 😉



  • Oh man bin ich dämlich 🙂
    Habe mir die Header Datei gar nicht groß angeschaut. Tja selbst Schuld. Werde mich aber jetzt noch mal ein wenig in das Thema einlesen.
    Jedenfalls vielen Dank für eure Hilfe. Echt Klasse.

    Eine Frage habe ich jedoch noch. Könnt Ihr ein richtig gutes Buch empfehlen mit welchen man sich gut C beibringen kann. Quasi so nen Geheimtipp.



  • mattrock schrieb:

    Eine Frage habe ich jedoch noch. Könnt Ihr ein richtig gutes Buch empfehlen mit welchen man sich gut C beibringen kann. Quasi so nen Geheimtipp.

    Das hat Wutz gerade geschrieben:
    http://www.c-plusplus.net/forum/294512-10



  • super danke


Anmelden zum Antworten