Fehler! bekomms ned ruas!



  • Danke TacX Es funzt nun! ^^
    mfg
    Gimmli



  • Hi!

    hab wieder ein prob.

    hier der compiler fehler:
    [Warning] passing arg 1 of `sprintf' makes pointer from integer without a cast

    hier der Betroffene Code:

    for(i=0;i<8;i++){
        zahl2[i][1]=(zahl/(int)pow(zahlenSystem, i))%zahlenSystem;
        sprintf(zeile[i][wo] ,"%d" , zahl2[i][1]);
    }
    

    check das problem ned!

    mfg
    Gimmli



  • Gimmli schrieb:

    sprintf(zeile[i][wo] ,"%d" , zahl2[i][1]);

    probier mal so:
    sprintf(&zeile[i][wo] ,"%d" , zahl2[i][1]);



  • HÄ?!?!?

    wieso funktionierts jetzt?!?!?! 😮 😮 😮 😮



  • Gimmli schrieb:

    wieso funktionierts jetzt?!?!?! 😮 😮 😮 😮

    funktioniert's wirklich oder compiliert es nur?



  • Compilieren tut ers mal! ^^
    aber funktionieren eigentlich ned!
    keine ahnung warum.
    war zu voreilig mit meinem schluss! 🙄 🙄

    mfg
    Gimmli



  • Lesen: http://www.lugbz.org/documents/smart-questions_de.html

    Du gibts hier viel zu wenig Infos und läßt die Leute raten.Man kann hier nicht mal erkennen was für ein Typ "Zeile" ist...

    Ich "vermute" mal "int/short Zeile[x][y];" was ja natürlich Quatsch ist.
    Also, Frage richtig formulieren, mit allen relevanten Infos rüberkommen, dann kann dir geholfen werden. Zumindest alle deklarationen der Typen, die in deinem Codeausschnitt vorkommen.

    HTH Andy



  • ok neuer versuch!
    ich hab das ganze mal umgeschrieben aber ich habe noch immer den selben fehler:

    28 [Warning] passing arg 1 of `sprintf' makes pointer from integer without a cast

    hier der Code:

    #define MAX 500
    
    char string[MAX];
    char zeile[8][5];
    
    int H_ausgabe(int wo){
      int H[8]={195,195,195,255,255,195,195};
      int i=0;           
    
      for(i=0; i<=8; i++){
        sprintf(zeile[i][wo] , "%d" , H[i]); //Fehler ist da!
      }
    }
    

    Gruß Gimmli!



  • probier's so

    ...
     sprintf(zeile[i] , "%d" , H[i]);
     ...
    

    H_ausgabe steht doch sicher für 'hausaufgabe', oder?
    😉 :xmas2:



  • compiler sagt nichts jedoch habe ich einen fehler in der anwendung! Soll ich mal ganzen code posten?
    Der code ist nur der zum testen!

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<ctype.h>
    
    #define MAX 500
    
    char string[MAX];
    char zeile[8][5];
    
    int umrechnen(int zahlenSystem, int zahl[], int wo){
      int i;
      int erg[8];
    
      for(i=0;i<8;i++){
    
        erg[i]=((int)zahl/(int)pow(zahlenSystem, i))%zahlenSystem;
      }
    }
    
    int H_ausgabe(int wo){
      int H[8]={195,195,195,255,255,195,195};
      int i=0;           
    
      for(i=0; i<=8; i++){
        sprintf(zeile[i] , "%d" , H[i]); 
      }
    }
    int zeichen_lesen(){
      char zeichen;
      int anz=strlen(string);
      int i=0;
      int r=0;
    
      for(i=0;i<=anz;i++){
          zeichen = toupper(string[i]);
          switch (zeichen){    
            case 'H':H_ausgabe(i);break;
          }
      }
      for(r=0; r<=5; r++){
        printf("%s\n", zeile[r][1]);
      }
      getch();
      return 0;
    }
    
    int main(){
    
       printf("Bitte geben sie ein Wort ein (nicht groeser als 5 Buchstaben) ==>"); 
       fgets(string, MAX, stdin);
    
       zeichen_lesen();
    }
    

    h ausgabe steht nicht für hausaufgabe! 😃 wie kommst du drauf! 🙄
    nein hausaufgaben sind mir im moment noch zu easy!



  • Was genau soll denn H_Ausgabe() machen? Vielleicht hast du ja einen generellen Denkfehler in deinem Programm?

    (und was soll das Array H[] eigentlich darstellen?)



  • Gimmli, du solltest mal anfangen einen Debugger zu benutzen. Schritt für Schritt logisch durch das Programm durchgehen, so findet man die Fehler selbst. Zumal du noch nichtmal sagst was der Fehler ist 🙄



  • H ausgabe soll die werte die in H[] stehn an zeile[][] übergeben.
    ICh versuche gerade das:

    int H_ausgabe(){
       char stringH[]="HHHHHHHHHHH";
    
       char H1[MAX];
       char H2[MAX];
       char H3[MAX];
    
       sprintf(H1, "%0.2s%8.2s%3.0s", stringH, stringH, stringH, stringH);
       sprintf(H2, "%1.3s%3.2s%4.3s%3.0s", stringH, stringH, stringH, stringH);
       sprintf(H3, "%2.4s%6.4s%3.0s", stringH, stringH, stringH); 
    
       strcat(zeile1, H1);
       strcat(zeile2, H1);
       strcat(zeile3, H1);
       strcat(zeile4, H2);
       strcat(zeile5, H3);
       strcat(zeile6, H1);
       strcat(zeile7, H1);
       strcat(zeile8, H1);
    
    }
    

    anders zu schreiben so wie hlat oben! und ich gebe dann die zahlen zb. 195 binär aus. dann ersetze ich die 0 mit einem ' ' und die 1 mit einem 'H'.

    Debugger von Dev-Cpp funktioniert nicht wo wirklich! der geht bei mir nicht in die einzelnen funktionen. bzw. braucht man mal mindestens 3 verscuhe das er was macht!

    gruß
    Gimmli



  • Also binäre Ausgaben bekommst du mit printf() nicht hin. Such mal im Forum nach "Binär" oder "Binärzahl", um einen Lösungsansatz zu finden.

    Und eventuell wäre es besser, die einzelnen Zeichen direkt zuzuweisen.

    PS: Ich nehme an, am Ende hast du für jeden Buchstaben eine eigene Funktion, die sich nur durch das Array am Anfang unterscheidet. Da wäre es gut, alles in eine Funktion zu packen und anhand eines Parameters auszuwählen, welcher Buchstabe gezeichnet werden soll.



  • CStoll schrieb:

    Also binäre Ausgaben bekommst du mit printf() nicht hin. Such mal im Forum nach "Binär" oder "Binärzahl", um einen Lösungsansatz zu finden.

    hab mir schon eine Funktion geschrieben.

    CStoll schrieb:

    Und eventuell wäre es besser, die einzelnen Zeichen direkt zuzuweisen.

    PS: Ich nehme an, am Ende hast du für jeden Buchstaben eine eigene Funktion, die sich nur durch das Array am Anfang unterscheidet. Da wäre es gut, alles in eine Funktion zu packen und anhand eines Parameters auszuwählen, welcher Buchstabe gezeichnet werden soll.

    Jo habe für jeden Buchstaben eine Eigene Funktion. könnt ich ja den parameter an ein switch anhängen oder? Danke hast mir echt weiter geholfen!

    mfg
    Gimmli



  • CStoll schrieb:

    Also binäre Ausgaben bekommst du mit printf() nicht hin. Such mal im Forum nach "Binär" oder "Binärzahl", um einen Lösungsansatz zu finden.

    hab mir schon eine Funktion geschrieben.

    CStoll schrieb:

    Und eventuell wäre es besser, die einzelnen Zeichen direkt zuzuweisen.

    PS: Ich nehme an, am Ende hast du für jeden Buchstaben eine eigene Funktion, die sich nur durch das Array am Anfang unterscheidet. Da wäre es gut, alles in eine Funktion zu packen und anhand eines Parameters auszuwählen, welcher Buchstabe gezeichnet werden soll.

    Jo habe für jeden Buchstaben eine Eigene Funktion. könnt ich ja den parameter an ein switch anhängen oder? Danke hast mir echt weiter geholfen!

    mfg
    Gimmli



  • CStoll schrieb:

    Also binäre Ausgaben bekommst du mit printf() nicht hin. Such mal im Forum nach "Binär" oder "Binärzahl", um einen Lösungsansatz zu finden.

    hab mir schon eine Funktion geschrieben.

    CStoll schrieb:

    Und eventuell wäre es besser, die einzelnen Zeichen direkt zuzuweisen.

    PS: Ich nehme an, am Ende hast du für jeden Buchstaben eine eigene Funktion, die sich nur durch das Array am Anfang unterscheidet. Da wäre es gut, alles in eine Funktion zu packen und anhand eines Parameters auszuwählen, welcher Buchstabe gezeichnet werden soll.

    Jo habe für jeden Buchstaben eine Eigene Funktion. könnt ich ja den parameter an ein switch anhängen oder? Danke hast mir echt weiter geholfen!

    mfg
    Gimmli



  • Gimmli schrieb:

    CStoll schrieb:

    Und eventuell wäre es besser, die einzelnen Zeichen direkt zuzuweisen.

    PS: Ich nehme an, am Ende hast du für jeden Buchstaben eine eigene Funktion, die sich nur durch das Array am Anfang unterscheidet. Da wäre es gut, alles in eine Funktion zu packen und anhand eines Parameters auszuwählen, welcher Buchstabe gezeichnet werden soll.

    Jo habe für jeden Buchstaben eine Eigene Funktion. könnt ich ja den parameter an ein switch anhängen oder? Danke hast mir echt weiter geholfen!

    Threoretisch benötigst du dann auch kein switch mehr:

    //Prinziplösung - müsste noch ausgebaut werden:
    int Ausgabe(int wo, char was)
    {
      int data[][8] =
      {
        ...
        {195,195,195,255,255,195,195},
        ...
      }
    
      //jetzt rechnest du dir aus 'was' den richtigen Index im Feld data aus und vearbeitest die Werte aus data[ind][...] weiter
    }
    
    ...
    for(i=0;i<=anz;i++)
    {
      Ausgabe(i,toupper(string[i]);
    }
    

Anmelden zum Antworten