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