die Schleife geht nur durch 0-9 der Ausgang ist dies. der Fehler im bekommen 6 abbrechen, im nicht sicher, was es bedeutet,Erstellen von Dateien in c bekommen Abbruch: 6 Fehler
1.txt 38
2.txt 5
3.txt 6
4.txt 24
5.txt 17
6.txt 12
7.txt 34
8.txt 30
9.txt 6
Abort trap: 6
auch unter dem Code die gleichen Zufallszahlen erzeugt jeder laufen, wie kann ich es zufällig machen
void save(char *, int);
void create(char *, int);
void close();
FILE * list;
FILE * file;
int main(void)
{
char ext[4] = ".txt";
static const int MIN = 1 ;
static const int MAX = 40 ;
int rdm , fsize;
list = fopen("filelist.txt","w");
char str[2];
//char str3[6];
list = fopen("filelist.txt", "a+");
for(int i = 0 ; i < 10 ; i ++)
{
sprintf(str,"%d",i+1);
char * str3 = (char *) calloc(1,1 + strlen(str)+ strlen(ext));
//file = fopen(str3,"r");
strcat(str3,str);
strcat(str3, ext);
// printf("%s \n",ext);
//strcat(str3, ext);
rdm = (rand()%(MAX-MIN)+MIN);
printf("%s %i \n",str3, rdm);
save(str3 , rdm);
create(str3 , rdm);
// printf("%s \n",ext);
}
close();
}
void save(char * fname , int sz)
{
fprintf(list , "%s %d %d \n" , fname , sz , sz*512);
}
void create(char * fname , int sz)
{
file = fopen(fname, "w");
fseek(file, sz*512, SEEK_SET);
fputc('\n', file);
fclose(file);
}
void close()
{
fclose(list);
}
'char ext [4] = ".txt";'. Das erzeugt keine gültige NUL-terminierte Zeichenfolge. Ändern Sie es in 'char ext [] =" .txt "' oder 'char ext [5] =" .txt "'. – kaylum
Zum einen ist 'str' zu klein. Sie benötigen 2 Byte für die Zahl (da sie bis zu 10 beträgt) plus 1 Byte für das abschließende Nullbyte. Das sind 3 Bytes. –
Nur ein freundlicher Tipp, sollten Sie diese Seite lesen: [How-To-Ask Leitfaden] (https://stackoverflow.com/help/how-to-ask), so dass Sie immer sicher sein können, dass Ihre Fragen sind leicht zu beantworten und so klar wie möglich. Stellen Sie sicher, dass Sie alle Anstrengungen unternommen haben, die Sie unternommen haben, um das Problem zu beheben, das Sie haben, und was passiert ist, als Sie diese Korrekturen versuchten. Vergessen Sie auch nicht Ihren Code und eventuelle Fehlermeldungen! –