Zufallsbuchstaben erzeugen ---> error



  • Hi leute,

    ich hab versucht statt Zufallszahlen, Zufahlsbuchstaben zu erzeugen.
    Ich hab zwar schon den error gegoogelt, aber ein Profi im English bin ich nicht.
    Auf Deutsch ist fast nichts zu finden.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      char a;
    
    	a = rand()%('Z'-'A') + 'A';
    	printf("%c",a); 
    
    	return (0);
    }
    

    Dieser Fehler kommt:
    fatal error LNK1168: "C:\Users\.....\Documents\Visual Studio 2008\Projects\fileio002.c\Debug\fileio002.c.exe" kann nicht zum Schreiben geöffnet werden.

    MfG C_boy



  • Du hast wahrscheinlich noch einen hängenden Prozess von einem vorhergehenden Testlauf auf der exe-Datei liegen, die ist also noch gelockt.
    Beende die IDE komplett, starte neu und beende zukünftig alle Testläufe sauber.



  • Lösung gefunden.



  • Du solltest noch das seed initialisieren. Sonst bekommst du immer die selben Zufallswerte.



  • So, ich hab jetzt ein Programm geschreiben das zufällig Buchstaben in eine File schreibt und die sortierten in eine andere.

    Das wichtigste ist das es funktioniert, aber kann man das leichter schreiben, also ich meine vom Stil her, oder passt das?

    Habt ihr vielleicht Aufgabenstellungen die ich hier weiter ausführen kann bei dem Programm?

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX_ANZAHL 10
    
    void sort(char zufall[]);
    void sort(char zufall[])
    {
      int x;
    	int i;
    	int hilf;
    
    	for(x=0; x<MAX_ANZAHL; x++)
    	{
    	  for(i=0; i<MAX_ANZAHL-1; i++)
    		{
    		  if(zufall[i+1] < zufall[i])
    			{
    			  hilf=zufall[i];
    				zufall[i]=zufall[i+1];
    				zufall[i+1]=hilf;
    			}
    		}
    	}
    }
    
    int main()
    {
    	char zufall[MAX_ANZAHL];
    	int x;
    	FILE * zufallbuch=NULL;
    	FILE * alphabet=NULL;
    
    	srand (time (NULL));
    
    	zufallbuch=fopen("zufall.csv","w");
    	for(x=0; x<MAX_ANZAHL; x++)
    	{  
    		zufall[x] = rand()%('Z'-'A') + 'A';
    		printf("zufall[%d] ; %c\n",x,zufall[x]); 
    		fprintf(zufallbuch,"zufall[%d] ; %c\n",x,zufall[x]);
    	}
    	fclose(zufallbuch);
    
    	printf("\n\n");
    
    	alphabet=fopen("alpha.csv","w");
    	sort(zufall);
    
    	for(x=0; x<MAX_ANZAHL; x++)
    	{  
    		printf("zufall[%d] ; %c\n",x,zufall[x]); 
    		fprintf(alphabet,"zufall[%d] ; %c\n",x,zufall[x]); 
    	}
    	fclose(alphabet);
    
    	return (0);
    }
    


  • Mach die Anzahl der Zeichen variabel.
    Gib die Anzahl der Zeichen als Kommandozeilenparameter mit an.



  • Sorry :(. Aber kannst du bitte genauer erklären was du meinst.



  • C_Boy schrieb:

    Sorry :(. Aber kannst du bitte genauer erklären was du meinst.

    Er meint:

    int main(int argc, char **argv)
    


  • Das heist jetzt genau?



  • DirkB schrieb:

    Mach die Anzahl der Zeichen variabel.

    Im Augenblick hast du MAX_ANZAHL Zeichen.
    Verzichte auf MAX_ANZAHL. Verzichte auf eine Höchstgrenze.
    Lies den Wert für die Anzahl ein.
    Fang damit an, das du sort() die Anzahl der Zeichen mit übergibst.

    DirkB schrieb:

    Gib die Anzahl der Zeichen als Kommandozeilenparameter mit an.

    Lass diesen Wert als Parameter nach dem Dateinamen angeben:
    fileio002.c.exe 123456
    für 123456 Zeichen.
    fileio002.c.exe 12
    für 12 Zeichen.

    Dazu noch die Stichwörter:
    malloc, argc, argv


Anmelden zum Antworten