Speicherzugriffsfehler

sunmania

Mitglied
hallo,

ich habe folgendes Problem. ich habe ein Programm in C geschrieben und wenn ich es ausführen will, erscheint "Speicherzugriffsfehler" auf dem Bildschirm. Warum:

Code:
#include <stdio.h>
#include <string.h>

main()
{
printf("\33[2J");
printf("\33[01;01H");
char cdparanoia[200];
char lame[300];

int t;
puts ("CD-ACTIVE RIP		V 0.0.1\n");
puts ("================================\n");
printf("Anzahl der Tracks: ");
scanf ("%1f",&t);
int z;
for (z=1.0f;z<=t;z++)
 {
 strcpy (cdparanoia, "cdparanoia ");
 strcat (cdparanoia, z);
 strcat (cdparanoia, " ");
 strcat (cdparanoia, z);
 strcat (cdparanoia, ".wav"); 
 strcpy (lame, "lame ");
 strcat (lame, z);
 strcat (lame, ".wav ");
 strcat (lame, z);
 strcat (lame, ".mp3");
 system (cdparanoia);
 system (lame); 
 }
return 0;
}

Bildschirmausgabe:
Code:
CD-ACTIVE RIP           V 0.0.1

================================

Anzahl der Tracks: 1
Speicherzugriffsfehler
 
Hi.

Was benutzt du denn für einen Compiler? Also mein Compiler (GCC 4.1.2) zeigt 4 Warnungen an. Diese solltest du alle verhindern.

Du solltest dir nochmal überlegen welche Typen die Variablen haben und welchen Typ die Argumente der Funktionen haben.
C:
  int t;
  scanf ("%1f",&t);
Hier gibst du an, dass scanf einen Float-Wert mit einer max. Breite von 1 einlesen soll (also max. eine Ziffer), übergibst aber einen Zeiger auf einen Integer? :confused: Das passt nicht zusammen.
C:
int z;
for (z = 1.0f; ...)
Du definierst z als Integer, weist aber einen Float-Wert zu? Warum? :confused: (PS: Das ist hier nicht so schlimm, weil der Compiler das implizit castet, aber anscheinend hast du damit ziemliche Schwierigkeiten).

Gruß
 
Zuletzt bearbeitet:
Zurück