О
char fileName; //global variable, just below function prototypes
если fileName
предполагается как строка, то это должен быть указатель на первый char
в этой строке (т.е. char *fileName
).
если fileName
является указателем на строку, то он должен быть объявлен как char **fileName
.
О
char *fileType;
если это локальная переменная, а fileName
- указатель на нее, то после возврата функции она будет уничтожена, а указатель укажет на неизвестные данные.
О
fileName= (int) &fileType; //store the file name for further use
мне это кажется бессмысленным. Зачем приводить адрес fileType
к целому числу? Я думаю, компилятор жаловался, потому что fileName
это char
, а не char *
, и вы заметили, что это исправит ошибку. Не делайте такого рода исправлений, не понимая, что вы делаете, потому что подобное программирование просто приводит к эзотерическому коду, который, вероятно, в любом случае не будет работать должным образом.
Итак, если fileName
определено как char *
, просто выполните fileName = fileType
. Иначе, если fileName
объявлено как char **
, тогда выполните fileName = &fileType
;
О
fileType= strtok(NULL, "."); //get the file type
если strtok()
может вернуть указатель на новую строку, а fileName
объявлен как char *
, то все, что вы сохранили в нем ранее, не будет иметь смысла В этом случае fileName
должен быть char **
(указатель на строку), который я предложил в своем первом комментарии.