myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Zufallstexte C

Willkommen

myGully

Links

Forum

 
Antwort
 
Themen-Optionen Ansicht
Ungelesen 06.04.13, 12:42   #1
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
Ungelesen 06.04.13, 17:07   #2
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Schnidlwuz Beitrag anzeigen
DAs Problem mit dem zeichen ist gelöst, die laufvariable i muss von 0 bis kleiner zufallszahl laufen, weiß jemand warum?
Ein C-Mensch beginnt immer bei 0 zu zählen und nicht bei 1.
Die erste Position in einem C-String bzw. C-Array ist also 0 und die letzte MAX-1.

Zitat:
Die warnung wird aber immer noch angezeigt
Deine Funktion erwartet als Übergabe-Parameter einen Pointer und bekommt eine Variable, schlimmer Fehler.

PHP-Code:
char *buf 0
Ausserdem verwendest du ein malloc ohne ein free, auch ein schlimmer Fehler.

Das einfachste wäre, du machst es wie urga:

PHP-Code:
char buf[512]; 
oder

PHP-Code:
  char buf[MAXLEN+1]; 
germgerm ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.


Sitemap

().