chciałbym żeby mi działała taka funkcja, która umożliwia wybór nazwy pliku
Kod: Zaznacz cały
void Choose_the_filename(char inside_filename[20], int * inside_choosing_filename)
{
int i;
char filename[20];
int choosing_filename;
printf("\nWrite the name of the file (0 for exit): ");
do
{
choosing_filename=0;
scanf("%s",&filename); //read the name of the file
for (i=0;i<20;i++) //check whether there are any illegal characters
{
//these symbols are illegal \/:*?"<>| \92 /47 :58 *42 ?63 "34 <60 >62 |124
if (filename[i]==(char)0) i=22;
if (i<22) if ((filename[i]==((char)92))||(filename[i]==((char)47))||(filename[i]==((char)58))||(filename[i]==((char)42))||(filename[i]==((char)63))||(filename[i]==((char)34))||(filename[i]==((char)60))||(filename[i]==((char)62))||(filename[i]==((char)124))) choosing_filename=1;
}
if (filename[0]=='0') {choosing_filename=2; break;} //check wheter user wants to exit
if (choosing_filename!=1) break;
printf("You cannot use symbols (%c%c%c%c%c%c%c%c%c). Choose once more: ",(char)92,(char)47,(char)58,(char)42,(char)63,(char)34,(char)60,(char)62,(char)124);
}
while (0==0);
inside_filename = filename;
*inside_choosing_filename = choosing_filename;
}
którą wywołuję w ten sposób
Kod: Zaznacz cały
char filename[20];
int choosing_filename; //0 for proper choice, 1 for illegal character, 2 for exit
Choose_the_filename(filename, &choosing_filename);
na przyklad nie potrafi wyswietlic czegos takiego (po dodaniu ostatniej linijki)
Kod: Zaznacz cały
char filename[20];
int choosing_filename; //0 for proper choice, 1 for illegal character, 2 for exit
Choose_the_filename(filename, &choosing_filename);
printf("Taki plik wybrales: %s",filename);
podejrzewam, że błędne są te cztery linijki, ale nie wiem jak je poprawić
Kod: Zaznacz cały
void Choose_the_filename(char inside_filename[20], int * inside_choosing_filename)
inside_filename = filename;
*inside_choosing_filename = choosing_filename;
Choose_the_filename(filename, &choosing_filename);
podsumowując funkcja, choć zapisuje wybór użytkownika do stringa, to potem nie potrafi przekazać stringa na zewnątrz
pozdrawiam!