The forums are currently locked and only available for read only access
: : Anders : :
Kommer du hit ofta?
Medlem
Forum Posts: 506
Member Since:
January 21, 2002
January 21, 2002
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Hej
Jag skall skriva ett program som går igenom en katalogstruktur och kontrollerar hur mycket plats filerna tar upp. Enkelt kan tyckas men programmet är för UNIX och jag är mest van vid .NET där minneshantering inte är ngt som man behöver bekymra sig om.
Hur som helst ger programmet "segmentation fault" ibland. Jag har lyckats lokalisera felet till funktionen strcat i while-loopen. Som jag fattar det blir det för att tmpdir är för liten, men men jag kan inte förstå varför då jag gett den 1000 genom malloc.
Jag vore tacksam om någon kunde ta sig tid och förklara detta för mig.
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <limits.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int c;
int options;
struct stat fstat;
struct dirent *dirp;
DIR *dp;
char *startdir;
char *tmpdir;
tmpdir = (char *) malloc(1000);
options = 0;
while ((c = getopt(argc, argv, "as")) != -1)
{
switch (c)
{
case 'a':
options++;
printf("a");
break;
case 's':
options++;
printf("s");
break;
default :
printf("nUsage: mdu [-a] [-s] [dir1 ...]nn");
exit(2);
}
}
/* Kontrollera om användaren har angivit namn på kataloger som skall kontrolleras */
if (argc > options+1)
{
startdir = argv[options+1];
}
else
{
startdir = "./";
}
if ( ( dp = opendir(startdir)) == NULL)
{
puts("Can not open directory");
exit(2);
}
while ( (dirp = readdir(dp)) != NULL)
{
if (strcmp(dirp->d_name, ".") == 0 || strcmp(dirp->d_name, "..") == 0)
continue;
tmpdir = strdup(startdir);
strcat(tmpdir, dirp->d_name);
printf("n%s", dirp->d_name);
}
if (closedir(dp) < 0)
puts("cant close dp");
return 0;
}
Edit: Fick hjälp från annat håll (strdup bytt mot strcpy)
Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 49
Currently Browsing this Page:
1 Guest(s)
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967
Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL
© Simple:Press —
![sp_Information](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_Information.png)