Einzelnen Beitrag anzeigen
Ungelesen 06.04.13, 12:42   #7
Schnidlwuz
Anfänger
 
Registriert seit: Sep 2009
Beiträge: 10
Bedankt: 1
Schnidlwuz ist noch neu hier! | 0 Respekt Punkte
Standard

So also die Ausgabe stimmt zu 90 % dh. es ist eine zufällige anzahl (1 bis MAXLEN) zufälliger buchstaben. Allerdings ist das erste Zeichen immer ein: °

Hängt wahrscheinlich mit dieser warnung zusammen?:

warning: passing arg 1 of `zufall' makes pointer from integer without a cast

Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAXLEN 5
#define CHAR 26

char* zufall (char* buf)
{



    /**** VARIABLEN ****/

    int zufallszahl;
    int i;



    /**** GENERIERUNG DER ZUFALLSZAHL ****/

    zufallszahl = rand() % MAXLEN +1;


    /**** DYNAMISCHE SPEICHERVERWALTUNG ****/

    buf = (char*) malloc (zufallszahl+1);


    /**** BESCHREIBUNG DES PUFFERS ****/

    for(i=1; i<=zufallszahl; i++)
    {
       buf[i] = 64 + (rand() % CHAR +1);
    }


    /**** RUECKGABE MIT NULLTERMINIERUNG ****/

    buf[i] = '\0';
    return buf;



    }


int main()
{
        char buf;
        srand(time(NULL));
        printf ("%s\n", zufall(buf));


    return 0;
}
die warnung wird für diese zeile in der main funktion gebracht :

Code:
printf ("%s\n", zufall(buf));

Hat jemand ne ahnung warum mir immer dieses ° mit ausgegeben wird?


EDIT: DAs Problem mit dem zeichen ist gelöst, die laufvariable i muss von 0 bis kleiner zufallszahl laufen, weiß jemand warum? Die warnung wird aber immer noch angezeigt
Schnidlwuz ist offline   Mit Zitat antworten