char array i function "Segmentation fault"
I nedenstående kode opstår en segmentation fault når jeg forsøger at strcpy(fileout,infile)... infile og fileout er begge af varierende størrelse, så det er ikke muligt at sætte disse til en bestemt størrelse...Der er et tilfælde tidligere hvor strcpy(file,argv[2]) virker fint, så jeg kan ikke se hvorfor det ikke virker begge steder..
hvordan løser jeg dette?
#include <stdio.h>
#include <string.h>
void printhelp();
int encode(char infile[]);
int decode(char infile[]);
int main(int argc, char *argv[])
{
// if cmdline is "ed.bin -e afile oops" or "ed.bin"
if (argc != 3)
{
printhelp();
}
else
{
char file[] = "",dash,arg;
dash = argv[1][0];
arg = argv[1][1];
strcpy(file,argv[2]);
printf("file is set to: %s\n",file);
if (dash == '-' && (arg == 'e' || arg == 'd') && file != "")
{
printf("You have chosen to %c: %s\n",arg,file);
if (arg == 'e')
{
if (encode(file) == 1)
printf("An error occured during encoding!\n");
}
else
if (arg == 'd')
{
if (decode(file) == 1)
printf("An error occured during decoding!\n");
}
else
printhelp();
}
else
printhelp();
}
printf("Program exiting...\n");
return 0;
}
void printhelp()
{
printf("UDSAT FOR CENSUR\n");
}
int encode(char infile[])
{
char password[] = "";
printf("File to encode is: %s\n",infile);
printf("Enter password: ");
scanf("%s",password);
printf("Password is: %s\n",password);
if (password != "")
{
printf("The password entered is: %s\n",password);
FILE *fin,*fout;
int in,out,count,passchar;
char fileout[] = "";
char ext[] = ".ed";
printf("just before fileout is setup\n");
//strcpy(fileout,infile);
//strcat(fileout,infile);
//fileout = infile;
// når jeg når hertil og prøver med en af de ovenstående 3 kommandoer, får jeg "segmentation fault" af programmet.... hvad gør jeg galt? formålet er at jeg vil have fileout = infile + ext
int i;
i = 0;
while ((fileout[i] = infile[i]) != '\0')
i++;
printf("1\n");
strcat(fileout,ext);
printf("file: %s\next: %s\nfileout: %s\n",infile,ext,fileout);
count = 0;
if ((fin = fopen(infile,"r")) != NULL)
if ((fout = fopen(fileout,"w")) != NULL)
while ((in = fgetc(fin)) != EOF)
{
if (count = strlen(password))
count = 0;
passchar = password[count];
out = //censur;
if (fputc(out,fout) == EOF)
printf("ERROR\n");
count++;
}
fclose(fin);
fclose(fout);
printf("Encoding done!\n");
return 0;
}
else
return 1;
}
int decode(char infile[])
{
char password[] = "";
printf("File to decode is: %s\n",infile);
// if (getpassword(*password) == 0)
if (password != "")
{
printf("The password entered is: %s\n",password);
printf("Decoding done!\n");
return 0;
}
else
return 1;
}